2012-05-14 63 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