質問

い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-内などのデバイスに走ります。 しかし この解明に資源を束ね( が構築出力になっているのだろうか。 )で働くようになります:

  1. 作成ファインダーフォルダをプロジェクト(Michaelこともなうグループ')
  2. おhtmlるフォルダ利用ファインダー
  3. にXcodeを使用 ファイル -> 追加のファイルのプロジェクト
  4. くのプロジェクトを認識することで、バンド:

    1. 右クリックし本プロジェクトの目標 ナビゲーター
    2. 確認対象を選択し、 の構築段階 タブ
    3. をクリックし コピーバンドルの資源 三角ブツ|>
    4. と- こちらは何らかのマイケル -で表示されてhtmlファイルのパスです。ものXCoders改善しているファイルの追加AI:)

ういったコピー-ペーストのマイケルのコード上 verbatum を変更す:

                     inDirectory:@"html"] 

                     inDirectory:nil]

Shaazam !また:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top