2011-11-02 33 views
6

我遇到了UIWebView的問題。我想在UIWebView中呈現自己的HTML代碼。loadHTMLString baseURL:無在iOS5中不工作

如果我使用下面的代碼,它工作正常。

NSBundle *thisBundle = [NSBundle mainBundle]; 
    NSString *path = [thisBundle pathForResource:@"foo" ofType:@"html"]; 
    NSURL *baseURL = [NSURL fileURLWithPath:path]; 
    [self.webView loadHTMLString:@"foo.html" baseURL:baseURL]; 

我想用下面的代碼呈現html。但它不起作用。 foo.html包含與NSString *完全相同的內容。任何提示?提前致謝。 =)

NSString* one = @"<html><head><title></title></head><body><img src=\"image.jpg\"/></body></html>"; 
    [self.webView loadHTMLString:one baseURL:nil] ; 

回答

23

我使用此代碼完美的作品:

NSString* htmlContent = @"<html><head><title></title></head><body><img src='image.jpg' /></body></html>"; 
[self.webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

卜確保image.jpg文件包含到您的項目。

+0

嗨,我不想讀本地html文件。我想直接使用這個。 NSString * one = @「」;「 – moon

+0

@moon:對不起,只需用html代替htmlContent即可。那是我在編寫這段代碼時所做的。我編輯我的答案。 – Oliver

+0

嗨,奧利弗,是的,它的工作。非常感謝。 :) – moon

1

創建JS文件demo.js並添加代碼

var hello = function(str){       return str; };

添加的UIWebView =>要嵌入的JavaScript在一個虛設的HTML文件,並且加載到的UIWebView

[self.webView loadHTMLString:@"<script src=\"demo.js\"></script>"               baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

這裏是打電話給JS的代碼

NString *[email protected]"hi JavaScript"; 
NSString *function = [[NSString alloc] initWithFormat: @"hello(%@)", str]; 
NSString *result = [webView stringByEvaluatingJavaScriptFromString:function]; 

現在,有一個重要的安全提示,使其實際工作:UIWebView必須實際上加載一個視圖。它不一定是可見的,但爲了WebKit引擎執行JS,它必須在視圖上。

相關問題