2012-05-14 35 views
4

我有许多网页被认为当前参资源,像这样相对和绝对路径,一个UIWebView内部使用:UIWebView的绝对路径引用CSS

<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]; 

如果我点在基本URL中“/页/路径”目录,将UIWebView中找到正确myimage.png,但不会找到mycss.css。我也尝试在Documents目录中指向baseURL,但是这无法解析任何资源。事实上,我一直无法获得UIWebView来解决任何绝对路径。

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

回答

0

您是否尝试过使用类似于(请参阅下文)的CSS路径?

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

这会工作,但就像我说的,我试图避免改变页面/路径。有一个涉及的内容管理系统,官僚作风等。对于我而言,UIWebView无法处理这件事,这有点令人惊讶。我觉得我一定会错过一些东西。 – ax123man

+0

尝试使用baseURL:无 – Dabrut

+0

UIWebView如何知道在baseURL的Documents目录中查找资源是否为零? – ax123man

0

为什么你想在你的HTML文件中有一些绝对路径引用?

我不认为这是一个好主意,因为你不知道你未来的用户应用程序安装过程。

例如,我的嵌入式网页是

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

的0E8A7BA5-8DB7-4F88-AC69-0E48F9182DD2部分更改每次你删除的应用程序的时间!

我觉得好办法是

  • 选择
  • 只有一些相对pathes“任何添加的文件夹中创建文件夹引用”加入你的网站在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 ]; 
    
+1

您的html已嵌入您的应用程序包中,并且我认为您可以控制它。我的html通过http的自定义同步过程动态传递并存储在Documents目录中。这些页面是由另一个使用CMS的组建立的,这些页面用于提供非移动网站。在这种情况下有绝对路径并不罕见。我必须权衡让这个小组使所有参考文献相对的政治。 – ax123man

+0

没关系,删除此评论 – ax123man

+0

好吧,我明白了。不幸的是,由于应用程序文件夹的未知部分,您无法使用绝对路径。我认为最好的解决方案是预先处理文件(例如perl或直接在移动应用程序中),并将每个绝对url转换为相关文件(witch base文件夹是您的网站根目录) – Martin