Внедрить HTML в UIWebVeiw - PullRequest
       1

Внедрить HTML в UIWebVeiw

0 голосов
/ 17 декабря 2011

У меня есть UIWebView, в который я пытаюсь ввести HTML-код. У меня есть файл шаблона, который я загружаю первым, а затем хочу изменить содержимое элементов по их идентификатору.

Вот мой код, в webViewDidFinishLoad::

    NSString *injectDetails = [NSString stringWithFormat:
                         @"document.getElementById('details').innerHTML = \"%@\";", searchResult.details];
    [webView stringByEvaluatingJavaScriptFromString:injectDetails];

Я пробовал это, избегая кавычек, и это тоже не сработало:

    NSString *injectDetails = [NSString stringWithFormat:
                         @"document.getElementById('details').innerHTML = \"%@\";", [searchResult.details stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]];
    [webView stringByEvaluatingJavaScriptFromString:injectDetails];

Я могу ввести обычный текст, и это работает. Html, который не работает, это длинная строка, которую я просто загрузил с помощью [webView loadHTMLString:aDescription baseURL:NULL];, которая работала нормально.

Что мне нужно сделать, чтобы эта работа работала с html?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2012

У меня просто была такая же проблема при попытке добавить стиль к заголовку документа. Поэтому я просто избежал всех двойных квот с помощью \\ "(в сценарии это выглядит как \"). Смотрите код ниже:

NSString *js = @" <style type=\\\"text/css\\\"> * { -webkit-touch-callout: none; -webkit-user-select: none; } </style> ";
[_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.head.innerHTML = document.head.innerHTML+\"%@\"",js]];
0 голосов
/ 17 декабря 2011

попробуйте следующую строку кода, чтобы это произошло.

NSString *imagePath = [[NSBundle mainBundle] resourcePath];
imagePath = [imagePath stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
imagePath = [imagePath stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

NSString *HTMLData = @"Hello this is a test<img src="sample.jpg" alt="" width="100" height="100" />";

[webView loadHTMLString:HTMLData baseURL:[NSURL URLWithString: [NSString stringWithFormat:@"file:/%@//",imagePath]]];

Строка 1 Получит путь к корневой папке основного пакета.

Строка 2 Нам нужны косые черты длядвойная косая черта для правильной работы в UIWebView, поэтому мы ищем все экземпляры «/» и заменяем его на «//»

Строка 3 То же, что и выше, но мы ищем пробел и заменяемэто с HTML-эквивалентом% 20

Строка 4 Это соединение нескольких примеров данных для нашего UIWebView, вы увидите, что мы установили источник изображений только для нашего файла «sample.jpg», как он сидитв корневой папке, если бы она находилась в папке с именем «images», нам нужно было бы установить источник «images // sample.jpg».Помните двойную косую черту!

Строка 5 Это почти то же самое, что и мой пример в руководстве, хотя мы устанавливаем baseURL в корень нашего пакета приложений, это позволяет нам ссылаться на все относительно, а не на абсолютные пути.

Используя вышеперечисленное, вы можете сделать это .. сообщите мне, если возникнет какая-либо проблема ..

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