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 на тему