2012-07-30 65 views
0

我試圖加載JavaScript到UIWebView。以下是我的代碼:我試圖加載JavaScript到我的UIWebView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]; 
    NSURL *url = [NSURL fileURLWithPath:path]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [webview loadRequest:request]; 
} 

-(void)webViewDidFinishLoad:(UIWebView *)webView{ 

    NSString *javascript = [[NSString alloc] initWithContentsOfFile:@"script.js" encoding:NSUTF8StringEncoding error:nil]; 
    [webView stringByEvaluatingJavaScriptFromString:javascript]; 
} 

我在這裏做錯了什麼? Web視圖完成加載,所以我假設我在做錯誤的Javascript。

+0

看起來它可能不會知道在哪裏可以找到的script.js。如果你用'[[NSBundle mainBundle] pathForResource:@「script」ofType:@「js」]替換'@「script.js」',這有幫助嗎? – 2012-07-30 21:36:25

+0

不,沒有工作:(我仍然得到一個空白的網頁視圖 – 2012-07-30 21:52:44

+0

另外兩件事情要檢查:1)是'-webViewDidFinishLoad:'被叫?如果沒有,您可能沒有設置Web視圖的代理插座。 2)是否包含在Copy Bundle Resources構建階段中的script.js? – 2012-07-30 21:56:46

回答

0

如果我正確理解你的問題,你試圖加載JavaScript到UIWebView。 [UIWebView stringByEvaluatingJavaScriptFromString]用於執行已經加載到UIWebView中的函數。

爲什麼不在你的本地index.html文件中包含script.js,然後使用[UIWebView stringByEvaluatingJavaScriptFromString]調用在script.js中定義的函數?

讓我知道如果我誤解了你的問題。

+0

昨天我真的解決了這個問題,忘了關閉這個問題。然而,你確實明白。我遇到的問題是我忘了將我的.js文件放入資源包中。 – 2012-08-03 21:43:58

0

你好!

這是我的答案。它是我的工作代碼。在您的項目工作區中創建一個JSLibraries物理文件夾 。將其添加到您的項目中。複製您的 abc.js文件。

- (void) addJSLibraryToHTML 
{ 
    NSURL *jqueryLibPath =[[NSBundle mainBundle] URLForResource:@"abc" withExtension:@"js" subdirectory:@"/JSLibraries" ]; 
    NSString *offlineJqueryLib = [NSString stringWithFormat:@"function addJquery()" 
            "{" 
            "function loadScript(url, callback)" 
            "{" 
            "var script = document.createElement('script');" 
            "script.type = 'text/javascript';" 
            "script.onload = function() {" 
            "callback();" 
            "};" 
            "script.src = url;" 
            "(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);" 
            "}" 
            "if(window.jQuery===undefined)" 
            "{" 
            "loadScript('%@', function()" 
            "{" 
            "//do call back to your native method from here" 
            "});" 
            "}" 
            "} ; addJquery();",jqueryLibPath.absoluteString]; 
    [self stringByEvaluatingJavaScriptFromString:offlineJqueryLib]; 
}