UIWebView stringByEvaluatingJavaScriptFromString обернуть тег другим тегом - PullRequest
0 голосов
/ 14 февраля 2012

Допустим, у меня есть такой 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 или что-то подобное.

Ответы [ 2 ]

0 голосов
/ 30 мая 2012

Ну, к сожалению, нет, но я нашел решение с прокси, которое может изменить HTML на лету, прежде чем я его получу.Работает так же: -)

0 голосов
/ 14 февраля 2012

Вы просто пропускаете кавычки вокруг нового html:

NSString* newCode = [NSString stringWithFormat:@"document.forms[0].%@.outerHTML=\"%@%@%@\";", self.identifier, code, innerhtml, endCode];

Помните, что externalHTML ожидает строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...