2012-07-06 25 views
0

我有一個帶有HTML頁面的UIWebView。現在我想調用HTML中的JS函數,並在其中傳遞Objective-C變量中的一些值。UIWebView調用帶參數的JS將不起作用

- (void) webViewDidFinishLoad:(UIWebView *)_webView{ 
    NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(%@)", @"hello"]]; 

    NSLog(@"webViewDidFinishLoad %@", @"YES"); 
} 

的JS功能在HTML文件中:

function initWithDataFromObjC(param1) { 
      alert(param1);   
    }    

當我在模擬器上運行應用程序時,有時它加載我的HTML是正確的,有時它卡住,不完成加載。但是它不顯示帶有「你好」的彈出窗口!

如果我改變編碼爲以下內容:

- (void) webViewDidFinishLoad:(UIWebView *)_webView{ 
    NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:@"initWithDataFromObjC()"]; 

    NSLog(@"webViewDidFinishLoad %@", @"YES"); 
} 

的JS功能,不帶任何參數

function initWithDataFromObjC() { 
     alert("hello");   
} 

第二結構將沒有任何問題運行。但是我想知道爲什麼當我嘗試傳遞一些參數時我不能正常工作?

BR & THX,

mybecks

回答

4

嘗試用:

NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC('%@')", @"hello"]]; 

NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(\"%@\")", @"hello"]]; 
+0

謝謝@JonathanNaguin。這個作品+1。但是當我想將2個參數傳遞給JS函數時,它將不起作用。 'stringByEvaluatingJavaScriptFromString'方法只支持1個參數嗎? – mybecks 2012-07-06 08:47:05

+1

我認爲有兩個參數應該像@「initWithDataFromObjC('%@','%@')」 – 2012-07-06 08:49:10

+0

當然!但我認識到這是一個愚蠢的錯誤,現在有2個參數,而且更有效;) – mybecks 2012-07-06 09:04:03