Допустим, у меня есть такой HTML-код:
<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>"];
(тогда как f - это объект, который содержит имя, идентификатор,и т.д. этого поля Signature8).Проблема в том, что это не работает.Когда я отлаживаю его, я вижу заполненный innerhtml, я вижу, что newCode на самом деле корректен (по крайней мере, для меня), и я подумал, что строка, которая назначает externalHTML с newCode и все это, должна соответствующим образом заменить весь HTML.Для проверки я вывел его на консоль.Да .. вообще ничего не изменилось.
Может кто-нибудь сказать мне, что я здесь не так делаю?На самом деле я не могу использовать jQuery или любую другую платформу, поскольку код должен получать свои HTML-формы от третьих лиц, и им не нужно использовать jQuery или что-то подобное.