У меня есть 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
Я также сохранил style.css в каталоге документов:
/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/12345-ID/Documents/mysite/style.css
Но теперь, когда я пытаюсь загрузить html в свой веб-просмотр, используя это:
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, я вижу, что запрос неверен. Он пытается запросить:
файл: ///style.css
вместо полного baseURL. Теперь я могу решить эту проблему, удалив / перед /style.css в html-файле. Но есть ли простой способ решить эту проблему в собственном коде без изменения html?
pathForResource:ofType:
изNSBundle
, а затем ссылаться с помощьюfile://<local_uri>
в своем собственном HTML. Например, дляjquery-2.1.1.min.js
я использую:NSString *jQueryFile = [[NSBundle mainBundle] pathForResource:@"jquery-2.1.1.min" ofType:@"js"]; NSString *jQueryUri = [@"file://" stringByAppendingString:jQueryFile];
, а затем просто добавляю его в свой HTML:NSString *html = [NSString stringWithFormat:@"<some_html><script type=\"text/javascript\" src=\"%@\"></script></some_html>", jQueryUri];
. Наконец:[myWebView loadHTMLString:html baseURL:nil];
- person Alejandro Iván   schedule 13.09.2016