4

我有许多在 UIWebView 中使用的网页,它们当前使用相对路径和绝对路径引用资源,如下所示:

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

HTML 文件本身位于路径“/page/path/page.html”,myimage.png 位于同一目录中。这些相同的页面也用于直接在浏览器中呈现,理想情况下我宁愿不更改路径。在 iPad 上,网站内容被动态加载到 Documents 目录中以供离线查看。问题是似乎没有任何方法可以让 UIWebView 处理绝对路径的分辨率。我正在使用以下内容加载内容:

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

如果我将 baseURL 指向“/page/path”目录,UIWebView 将正确找到 myimage.png,但不会找到 mycss.css。我还尝试将 baseURL 指向 Documents 目录,但这无法解析任一资源。事实上,我根本无法让 UIWebView 解析任何绝对路径。

有没有人能够获得使用 UIWebView 的绝对路径?

4

2 回答 2

0

您是否尝试对 CSS 的路径使用类似的东西(见下文)?

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

为什么要在 html 文件中添加一些绝对路径引用?

我认为这不是一个好主意,因为您无法知道未来用户的应用程序安装路径。

例如,我的嵌入式网页位于

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

每次删除应用程序时,0E8A7BA5-8DB7-4F88-AC69-0E48F9182DD2 部分都会更改!

我认为好的方法是

  • 通过选择“为任何添加的文件夹创建文件夹引用”在 xCode 中添加您的网站
  • 只有一些相对路径
  • 利用 :

    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 回答