Возможно, это похоже на вопрос, на который нет ответов: loadHTMLString не работает с iOS5?
У меня есть UIWebView, который я заполняю с помощью loadHTMLString: baseURL :.HTML-код маленький и простой, и он ссылается на таблицу стилей CSS и скрипт javascript, которые загружаются через 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 type="text/javascript" src="./myscript.js" />
Если удалить тег сценариязатем страница загружается и хорошо отображается в iOS5.И я могу сказать, что файл css, на который ссылаются так же, как файл сценария .js, загружается и применяется.
Если я сохраню тег script, но сделаю файл myscript.js полностью пустым, он по-прежнемуне удается загрузить.
Мне кажется, это своего рода проблема межсайтового скриптинга - в том, что WebView считает, что он должен запретить загрузку скрипта (и фактически запретить рендеринг страницы ??)
Не уверен, куда идти отсюда.Идеи?
ОБНОВЛЕНИЕ
Это все больше и больше похоже на проблему межсайтового скриптинга.Если я удаляю тег, он работает, хотя и без сценария.Все мои изображения загружаются из baseURL, как и моя таблица стилей.То есть мы знаем, что baseURL работает.
Если я заменим тег фактическим содержимым моего файла сценария, он будет работать, поэтому проблема не в самом сценарии.
Все еще ищем подтверждения и дополнительных идей для обхода.Мне неудобно вставлять сам скрипт в html, но пока это мое лучшее решение.В качестве альтернативы я мог бы написать html в файловую систему и загрузить через loadRequest, но опять же, не мой первый выбор.
ОБНОВЛЕНИЕ 2
Благодаря @djromero у меня есть решение,Мой документ является документом XHTML и поэтому использует самозакрывающийся тег сценария (без содержимого, только атрибуты). Но loadHTMLString:baseURL:
, по-видимому, принимает MIMEType text/html
, который UIWebView, по-видимому, теперь интерпретирует более строго - и в text/html
документы, которые могут не иметь самозакрывающихся тегов.
Мое решение состоит в том, чтобы переключиться на loadData:MIMEtype:baseURL:
и указать application/xhtml+xml
в качестве типа пантомимы.Я могу легко построить NSData из моей строки NSString, используя dataUsingEncoding:
.