UIWebView baseURL и абсолютный путь

у меня есть HTML-страница, которая построена следующим образом:

<html>
  <head>
    <link rel="stylesheet" href="/style.css" />
  </head>
  <body>

  </body>
</html>

он хранится в каталоге Мои документы:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/index.html

Я также сохранил стиль.css в каталоге документов:

/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/style.css

но теперь, когда я пытаюсь загрузить html в свой webview, используя это:

NSURL *test = [NSURL URLWithString:@"file:///Users/username/Library/Application Support/iPhone%20Simulator/5.1/Applications/12345-ID/Documents/mysite/"]
[myWebView loadHTMLString:<the content retrieved from index.html> baseURL:test];

css не загружен, когда я перехватываю запрос к таблице стилей с помощью NSURLProtocol, я вижу, что запрос неправильный. Он пытается запросить:

file: / / / style.в CSS

вместо полного baseURL. Теперь я могу решить эту проблему, удалив / перед / style.css в html-файле. Но есть ли простой способ решить эту проблему в собственном коде без изменения html?

2 ответов


создайте свой путь и базовый url следующим образом:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];

большой блог на эту тему:

http://iphoneincubator.com/blog/windows-views/uiwebview-revisited

а так QA на тему

UIWebView и локальный файл css


удаление косой черты было единственным решением