3

ページが読み込まれた UIWebView がhttp://blabla/index.htmlあり、いくつかのローカル リソース (js/bridge.js、css/main.css、...) を読み込む必要があります。したがって、htmlは次のようになります

<head>
<script src="file:///.../js/bridge.js"></script>
</head>

しかし、ローカル リソースを正確に参照するにはどうすればよいでしょうか。たぶん、ローカルの httpd を開いて、次のように参照する必要がありhttp://127.0.0.1/js/bridge.jsますか?

4

1 に答える 1

2

私の経験では、ローカル リソースとネットワーク リソースを混在させたい場合は、次のことを行う必要があります。

  1. 読み込み HTML をダウンロードし、ローカル ファイル システムを使用loadHTMLStringして読み込みます。baseURLURL がサーバー側の URL の場合、ローカル リソースの読み込みに成功しませんでした。私は常に HTML をダウンロードして直接ロードする必要がありました。

  2. すべてのネットワーク ソースは、完全に修飾されている必要があります (つまり、"http://..." を使用)。ベース URL をローカル ファイル システムに設定するため、サーバー コードでのローカル URL 参照は機能しません。彼らは完全に資格を持っている必要があります。

  3. iPhone ローカル ソースはすべてローカルで参照できます (つまり、プレフィックスなしで)。file://またはhttp://、ベース URL を HTTP REQUEST パラメータとして渡し、サーバー側スクリプトを実行してこの一意の URL を埋め込むことができます。

したがって、私の iOS コードは次のようになります。

// get my bundle local URL

NSURL *bundleUrl = [[NSBundle mainBundle] bundleURL];

// download the html from the server

NSData *data = [NSData dataWithContentsOfURL:url]; 
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// load that html into my web view using a the bundle as the base URL

[self.webView loadHTMLString:html baseURL:bundleUrl];

したがって、これが機能するために、私の HTML は次のようになります。

<html>
<body>
<table>
  <tr>
    <td>image from iOS file system using local reference</td>
    <td><img src="sample.png" /></td>
  </tr>
  <tr>
    <td>server image</td>
    <td><img src="http://myserverurl.com/sampleonserver.png" /></td>
  </tr>
</table>
</body>
</html>

ここではタグを使用してimgいますが、あなたのタグにも同じことが当てはまると思います。また、ローカル参照はバンドル内にあると想定していますが、Documents フォルダー内にある場合は同等だと思います。すべてのローカル参照がローカル ファイル システム内の相対ディレクトリを指していること、およびすべてのサーバー要求が完全修飾されていることを確認してください。

于 2013-03-25T02:34:43.533 に答える