私の経験では、ローカル リソースとネットワーク リソースを混在させたい場合は、次のことを行う必要があります。
読み込み HTML をダウンロードし、ローカル ファイル システムを使用loadHTMLString
して読み込みます。baseURL
URL がサーバー側の URL の場合、ローカル リソースの読み込みに成功しませんでした。私は常に HTML をダウンロードして直接ロードする必要がありました。
すべてのネットワーク ソースは、完全に修飾されている必要があります (つまり、"http://..." を使用)。ベース URL をローカル ファイル システムに設定するため、サーバー コードでのローカル URL 参照は機能しません。彼らは完全に資格を持っている必要があります。
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 フォルダー内にある場合は同等だと思います。すべてのローカル参照がローカル ファイル システム内の相対ディレクトリを指していること、およびすべてのサーバー要求が完全修飾されていることを確認してください。