リンクの資源の中WebView-iPhone
質問
いwebview私のiPhoneアプリ、また一部のhtmlファイルの中に資源をフォルダにまとめた。自分のアプリの荷重い負荷のページから資源を私のwebview.でも、私は必要です.私のwebviewがポイントその他の資源(例えば、画像、その他のhtmlファイル).だって相対的にリンクさんの仕事:
<a href="OtherPage.html">Doesn't work</a>
解決
、あなたはベースURLを設定する必要があります。あなたがこの方法を使ってこれを行うことができます:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
...ベースURLは、リソースフォルダのファイルURLだろうどこます。
他のヒント
どうやら落とし穴のビットは<のhref =「http://developer.apple.com/iphone/library/releasenotes/General/RN-iPhoneSDK-3/index.html」のrel = "noreferrerに応じてあります「> iPhone SDK iPhone OS 3.0 のリリースノート:
の問題:ののUIWebView 3.0に対してビルドアプリケーションでローカルリソースをロードすることはできません。
。
[UIWebView loadHTMLString:baseURL:]
使用して、HTML 文字列は、ローカルに参照すべきではありませんfile://
方式にリソース。 その代わり、NULL
かに渡しbaseURL:
<style>
、またはinclude用URL HTMLとで直接リソース<script>
とbaseURL
タグます。
十分なフェア。しかし、かなりの仕事をしません/
するための標準的な発行//
URLを渡します。しかし...それはあなたが%20
するNSString *markup
変更するとスペースがloadHTMLString:baseURL:
する場合は、あなたが設定され、ことが判明します! (多くの意味になりますが、二重スラッシュの部分は驚きによって私をつかまえ<=>使用。)
あなたはすでに<=>設定しているとしましょう。ここではあなたがすべてです。 (私は読みやすくするため、ここでのコードを巻いてきました。あなたが味を調整/リファクタリングすることをお勧めします。)
NSString *resourcePath = [[[[NSBundle mainBundle] resourcePath]
stringByReplacingOccurrencesOfString:@"/" withString:@"//"]
stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
[webView loadHTMLString:markup baseURL:[NSURL URLWithString:
[NSString stringWithFormat:@"file:/%@//", resourcePath]]];
限り、あなたのCSSのように、JavaScriptと画像はこれが<=>懸念しているiPhone OS 3.0でトリックを行う必要があり、単独のファイル名で呼ばれています!
私はそれを修正:8月が言ったように私はBASEURLのためにこれを使用します:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
ありがとうございます!
このコードでは、あなたのバンドルのリソースディレクトリに「OtherPage.html」という名前のファイルのURLの文字列を返します。
[[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"OtherPage" ofType:@"html"]] absoluteString]
これは私のために働きました。私のHTMLファイルには、私のプロジェクトにサブ・フォルダ(ないグループ)にありました。私のhtmlページは、page01と呼ばれ、サブフォルダはhtmlですされます:
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *pathToHtml = @"html";
NSURL *baseURL = [[NSURL alloc] initFileURLWithPath:pathToHtml isDirectory:YES];
NSString *html = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"page01" ofType:@"html"
inDirectory:@"html"]
encoding:NSUTF8StringEncoding error:nil];
[webview loadHTMLString:html baseURL:baseURL];
最初OtherPage.htmlをロードしてみます。あなたができない場合、それはありません、あなたはプロジェクトに追加の一部を見逃しています。あなたができる場合は、単にリンクにタイプミスがあるかもしれない、または8月で述べたようにベースURLは、間違っている可能性があります。私はリソースファイルにあったことでイメージを持つHTMLファイルを作成すると、それだけで、
を使用してうまく動きました<img src="file.png">
のPhoneGapはそれをしない方法を見てみましょう。 ここではiPhone の上のローカルリソースへの彼らのチュートリアルがあります。ステップ11は、あなたが無視しているものかもしれません。
この多分それはBASEURLとは何かを持っています
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
最後に見、それがベースURLを言います:「」。私はこれを取る場合は、それが(クラッシュ)は動作しませんが、私は私のリソースへのパスがわかりません。誰かがない場合.....?
私にとっての問題は、JSファイルがバンドルに含まれていなかったということでした。それを確認してください。
OK、この3.5年度)...ったマイケル-ゲイロードの提案上記正はこんな仕事を深め5.0、5.1など,6.0,6.1-内などのデバイスに走ります。 しかし この解明に資源を束ね( が構築出力になっているのだろうか。 )で働くようになります:
- 作成ファインダーフォルダをプロジェクト(Michaelこともなうグループ')
- おhtmlるフォルダ利用ファインダー
- にXcodeを使用 ファイル -> 追加のファイルのプロジェクト
くのプロジェクトを認識することで、バンド:
- 右クリックし本プロジェクトの目標 ナビゲーター 窓
- 確認対象を選択し、 の構築段階 タブ
- をクリックし コピーバンドルの資源 三角ブツ|>
- と- こちらは何らかのマイケル -で表示されてhtmlファイルのパスです。ものXCoders改善しているファイルの追加AI:)
ういったコピー-ペーストのマイケルのコード上 verbatum を変更す:
inDirectory:@"html"]
:
inDirectory:nil]
や Shaazam !また:)