Допустим, у меня есть HTML как это:UIWebView stringByEvaluatingJavaScriptFromString обертка тег с другой тег
<html>
<form>
<input type="button" id="Signature8" pdfFieldName="Signature8" onclick="document.location='pdz://signatureTapped?name=Signature8'" />
</form>
</html>
, и я хочу, чтобы заменить его программно с
<html>
<form>
<img src="Signature8.png">
<input type="button" id="Signature8" pdfFieldName="Signature8" onclick="document.location='pdz://signatureTapped?name=Signature8'" />
</img>
</form>
</html>
в Objective-C с UIWebView. То, что я до сих пор, пришел к этому:
-(void) injectCode:(NSString*) code intoWebView:(UIWebView*) webView withEndCode:(NSString*) endCode {
NSString* innerhtml = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.forms[0].%@.outerHTML", self.identifier]];
NSString* newCode = [NSString stringWithFormat:@"document.forms[0].%@.outerHTML=%@%@%@", self.identifier, code, innerhtml, endCode];
[webView stringByEvaluatingJavaScriptFromString:newCode];
NSLog(@"%@", [webView stringByEvaluatingJavaScriptFromString:@"document.body.outerHTML"]);
}
который следовало бы назвать так:
[f injectCode:[NSString stringWithFormat:@"<img src=\"%@.png\" id=\"%@\">", f.identifier, f.identifier] intoWebView:self.webView withEndCode:@"</img>"];
(а е представляет собой объект, который содержит имя, идентификатор и т.д. этого Signature8). Проблема в том, что это не работает. Когда я отлаживаю его, я вижу, что innerhtml заполнен, я вижу, что newCode на самом деле прав (по крайней мере для меня), и я подумал, что строка, которая назначает externalHTML с newCode, и все это должно заменить весь HTML соответственно. Чтобы проверить, я вывел его на консоль. Да ... ничего не изменилось.
Может ли кто-нибудь сказать мне, что я здесь делаю неправильно? Я не могу использовать jQuery или любую другую инфраструктуру, поскольку код должен получать свои HTML-формы от третьих лиц, и им не нужно использовать jQuery или что-то в этом роде.