我的iPhone應用程序中有一個webview,並且我的資源文件夾中還有一些html文件。當我的應用程序加載時,我從我的資源加載到我的webview中。但是,我需要在我的webview中創建指向其他一些資源(例如圖像或其他html文件)的鏈接。只是做一個相對的鏈接不起作用:鏈接到WebView中的資源 - iPhone
<a href="OtherPage.html">Doesn't work</a>
我的iPhone應用程序中有一個webview,並且我的資源文件夾中還有一些html文件。當我的應用程序加載時,我從我的資源加載到我的webview中。但是,我需要在我的webview中創建指向其他一些資源(例如圖像或其他html文件)的鏈接。只是做一個相對的鏈接不起作用:鏈接到WebView中的資源 - iPhone
<a href="OtherPage.html">Doesn't work</a>
當你加載這些資源,你需要設置基地址。您可以使用以下方法執行此操作:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
...其中baseURL將是資源文件夾的文件URL。
謝謝 - 但我會接受我的答案不是你的,因爲它實際上解決了我的問題(在你的幫助下)。謝謝! – 2009-01-26 20:49:30
你仍然可以在3.0中完成。見jdandrea的答案。 – 2009-11-13 05:56:48
看看Phonegap是如何做到這一點的。 Here's their tutorial on local resources on the iPhone。第11步可能是你忽略的。
不,我檢查了所有的步驟,我做了所有的步驟。不管怎麼說,還是要謝謝你。 – 2009-01-26 02:40:09
嘗試首先加載OtherPage.html。如果你不能那麼它不在那裏,你錯過了將它添加到項目中的某些部分。如果可以的話,那麼鏈接中可能只是一個錯字,或者如8月份所述,baseURL可能不正確。當我創建了它的圖像,是在資源文件的HTML文件,它工作得很好只是用
<img src="file.png">
不 - 如果我直接加載它可以正常工作。 – 2009-01-26 03:12:57
也許它確實有一些做的baseURL時:當我加載資源,我用這條線:
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
看到最後,它說baseURL:「」。如果我拿出來,它不起作用(崩潰),但我不知道我的資源的路徑。如果有人...... .....?
此代碼會返回一個字符串,其中包含您的資源目錄中名爲「OtherPage.html」的文件的URL。
[[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"OtherPage" ofType:@"html"]] absoluteString]
我固定它:我用這個像八月的BaseURL說:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
謝謝!
似乎無法在iPhone OS 3.0中使用。看到我的其他職位稍作修改! – 2009-09-08 21:03:32
這對我有效。我的HTML文件位於我的項目中的子文件夾(不是組)。我的HTML頁被稱爲頁01和子文件夾是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];
顯然有根據iPhone SDK Release Notes for iPhone OS 3.0一個一個抓把柄位:
問題:的UIWebView無法加載本地資源在針對3.0構建的應用中。
使用
[UIWebView loadHTMLString:baseURL:]
時,HTML 字符串不應使用file://
方案引用本地 資源。 相反,傳遞NULL
或file://
URL爲baseURL:
,或直接包括與<style>
和<script>
標記HTML中的 資源。
不夠公平。但傳入baseURL
的標準問題file://
網址並不適用。但是......事實證明,如果您將/
更改爲//
並將空格更改爲%20
,您將被設置! (使用%20
很有意義,但雙斜線部分讓我大吃一驚)。
假設您已經有NSString *markup
設置。這是你所做的一切。 (我在這裏包裝的代碼的可讀性。您不妨重構/調整品嚐。)
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中,關於loadHTMLString:baseURL:
的問題!
對我來說,問題是,js文件沒有包含在捆綁。一定要檢查一下。
OK,這裏5年後:) ...試圖邁克爾·蓋洛德的建議正上方,但它並沒有在SIMS 5.0,5.1,6.0,6.1的工作 - 也沒有在真正的設備上運行相同。 然而此SO澄清在資源捆綁(Where is build output going?)幫助使這對我的工作是這樣的:
確保項目的認識,它應該是在由捆:
因此,所有我需要做的就是複製 - 粘貼上面verbatum邁克爾的代碼和改變這一行:
inDirectory:@"html"]
於:
inDirectory:nil]
和Shaazam!它的工作:)
你介意給出一個完整的代碼示例嗎?徹底閱讀本頁面,我仍然對如何正確地將它們放在一起感到困惑。謝謝。 – mwt 2010-06-08 01:52:32