Возможно, это похоже на этот вопрос, который не имеет ответов: loadHTMLString не работает с iOS5?
У меня есть UIWebView, который я заполняю с помощью loadHTMLString: baseURL:. HTML небольшой и простой, и он ссылается на таблицу стилей css и javascript script, которые загружаются через baseURL:, который установлен в каталог внутри пакета приложений.
// load the html
NSString* filePath = [NSString stringWithFormat: @"%@/html", [[NSBundle mainBundle] resourcePath ] ];
[_pCurrentWebView loadHTMLString: html baseURL: [NSURL fileURLWithPath: filePath isDirectory: YES ] ];
Это всегда работало в прошлом, но оно сломалось в iOS5. В iOS5 ничего не отображается в UIWebView. Веб-просмотр содержит все ожидаемые события - например, shouldLoadRequest, didStartLoad, didFinishLoad и т.д.
В html есть тег script, например:
<script type="text/javascript" src="./myscript.js" />
Если я удалю тэг script, тогда страница загружается и отображает штраф в iOS5. И я могу сказать, что файл css, который указан так же, как и файл script.js, загружен и применен.
Если я сохраняю тег script, но делаю файл myscript.js полностью пустым, он все равно не загружается.
Мне кажется, что это похоже на проблему межсайтового скриптинга - поскольку WebView считает, что он должен запретить загрузку script (и, фактически, запретить отображение страницы?)
Не уверен, куда идти отсюда. Идеи?
UPDATE
Это все больше напоминает проблему межсайтового скриптинга. Если я удалю тег, он будет работать, хотя sans script. Все мои изображения загружаются из baseURL, как и моя таблица стилей. То есть мы знаем, что baseURL работает.
Если я заменил тег фактическим содержимым моего файла script, тогда он будет работать, поэтому проблема не в script.
Ищите подтверждения и дополнительные идеи, чтобы обойти. Мне неудобно сначала встраивать в script в html, но это мое лучшее решение. В качестве альтернативы я мог бы написать html в файловую систему и загрузить через loadRequest, но опять же, не мой первый выбор.
ОБНОВЛЕНИЕ 2
Благодаря @djromero у меня есть решение. Мой документ является документом XHTML и, как таковой, использует самозакрывающийся тег script (без содержимого, только атрибуты). Но loadHTMLString:baseURL:
, по-видимому, предполагает MIMEType text/html
, который UIWebView, по-видимому, теперь интерпретирует более строго - и в text/html
у вас могут не быть закрывающие теги.
Мое решение - переключиться на loadData:MIMEtype:baseURL:
и указать application/xhtml+xml
как тип mime. Я легко могу построить NSData из моего NSString, используя dataUsingEncoding:
.