6

次のように構成された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をdocumentsディレクトリに保存しました。

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

しかし今、これを使用してhtmlをWebビューにロードしようとすると:

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の代わりに。これで、htmlファイルの/style.cssの前にある/を削除することでこれを解決できます。しかし、HTMLを変更せずにネイティブコードでこれを解決する簡単な方法はありますか?

4

2 に答える 2

12

次の方法でパスとベースURLを生成します。

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

このテーマに関するすばらしいブログ:

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

主題に関するSOQA

UIWebViewとローカルcssファイル

于 2012-06-28T06:26:16.583 に答える
2

スラッシュを削除することが唯一の解決策でした

于 2012-07-23T09:27:50.007 に答える