Внедрить HTML в конец веб-страницы на iPhone с помощью JavaScript - PullRequest
1 голос
/ 01 марта 2012

У меня есть UIWebView, и я хочу вставить HTML-код в конец его после его загрузки.

NSString* javaScript = [NSString stringWithFormat:@"document.body.innerHTML += '%@'", arbitraryHTML];
[self.webView stringByEvaluatingJavaScriptFromString:javaScript];

Приведенный выше код работает, но только если правильно сформирован произвольный HTML.Например, одиночная кавычка 'экранируется как \'. Я бы хотел очистить HTML в genearl, чтобы я мог передать его в функцию javascript.

Какие другие символы мне нужно экранировать или строки, которые могутвызвать проблемы?

Вот пример некоторого HTML-кода, который нарушает код выше:

<span><a onmouseover=\\\"jQuery\\'# >Test</a></span>"

Можно ли это сделать в genearl?Что еще мне не хватает?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Вы должны убедиться, что двигатель JS не работает. Так что вам нужно избегать одинарных кавычек и обратной косой черты. Это должно сделать трюк:

arbitraryHTML = [[arbitraryHTML
        stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]
        stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]];

Обратите внимание, что вам также необходимо избегать обратной косой черты внутри строк Objective-C, как показано выше.

1 голос
/ 02 марта 2012

Оказывается, этого недостаточно, чтобы экранировать только символ одинарной кавычки. Мне также нужно было экранировать / n и / r, чтобы это работало со всем HTML в целом.

Там может быть какой-то другой персонаж, которого я пропустил, если я найду дело, я опубликую его.

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