4

現在、次のように相対パスと絶対パスの両方でリソースを参照している UIWebView 内で使用される多くの Web ページがあります。

<link rel="stylesheet" type="text/css" href="/css/path/mycss.css"/>
<img src="myimage.png" />

HTML ファイル自体はパス "/page/path/page.html" にあり、同じディレクトリに myimage.png があります。これらの同じページは、ブラウザーで直接レンダリングするためにも使用されます。理想的には、パスを変更したくありません。iPad では、Web サイトのコンテンツは動的に Documents ディレクトリに読み込まれ、オフラインで表示されます。問題は、UIWebView に絶対パスの解決を処理させる方法がないように見えることです。以下を使用してコンテンツをロードしています。

NSData *data = [NSData dataWithContentsOfFile:fullPath];    
[self loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:baseURL];

"/page/path" ディレクトリで baseURL を指すと、UIWebView は myimage.png を正しく見つけますが、mycss.css を見つけません。また、baseURL を Documents ディレクトリに指定しようとしましたが、どちらのリソースも解決できません。実際、UIWebView で絶対パスを解決することはできませんでした。

UIWebViewで動作する絶対パスを取得できた人はいますか?

4

2 に答える 2

0

HTML ファイルに絶対パス参照が必要なのはなぜですか?

将来のユーザー アプリケーションのインストール パスがわからないため、これは良い考えではないと思います。

たとえば、私の埋め込み Web ページは

file://localhost/var/mobile/Applications/0E8A7BA5-8DB7-4F88-AC69-0E48F9182DD2/MyApp.app/homepage/index.html

0E8A7BA5-8DB7-4F88-AC69-0E48F9182DD2 の部分は、アプリを削除するたびに変わります!

良い方法だと思います

  • 「追加されたフォルダーのフォルダー参照を作成する」を選択して、xCode に Web サイトを追加します。
  • いくつかの相対パスしかありません
  • 使用する :

    NSString * urlString = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"homepage"];
    NSURL * url = [NSURL fileURLWithPath:urlString isDirectory:NO];
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:(NSTimeInterval)10.0 ];
    
于 2012-05-14T15:45:49.847 に答える
0

CSS のパスにそのようなもの (以下を参照) を使用しようとしましたか?

<link rel="stylesheet" type="text/css" href="../../css/path/mycss.css"/>
<img src="myimage.png" />
于 2012-05-14T15:37:26.673 に答える