2012-02-09 118 views
2

我有一個很大的問題。我必須將一個javascript函數的變量傳遞給一個Objective-C變量。 這是我的代碼的部分:如何將javascript值傳遞給objective-C

的Javascript:

function abc(){ 
something... 
} 

的Objective-C:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"documentElement.textContent"]; 

的JavaScript代碼打印到視頻一個數字,我想在我的Objective-C代碼使用,但與此沒有任何出現,而是使用此代碼:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"]; 

它通過我想要的值和javascript函數的整個代碼!

請一定建議....謝謝!

`

+0

我想你需要一個JavaScript運行時嵌入到Objective C應用程序中...... – fortran 2012-02-09 18:08:30

+0

@fortran:WebView具有JavaScript功能,因此他調用的功能。 – 2012-02-09 18:15:58

+0

@ T.J.Crowder哦,我認爲「stringByEvaluatingJavaScriptFromString」函數是某種實際功能的佔位符名稱!我不能相信這樣一個長名字存在^ _^ – fortran 2012-02-09 23:56:47

回答

3

你婉通話的功能,不僅僅是指它:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent()"]; 

的鍵位是底:

...documentElement.textContent()"]; 
//       ^^ 

由於JavaScript函數是一流的物體,當你這樣做時:

x = functionName; 

... x接收到函數的引用。在你的情況下,由於UIWebView將它強制轉換爲一個字符串,所以你最終在該函數上調用toString,在大多數JavaScript實現中該函數爲你提供了該函數的代碼(儘管這沒有被任何標準指定)。

要真正通話一個功能,你把括號後(有沒有在他們,如果沒有參數,你需要傳遞;或者在他們的參數,如果你這樣做),例如:

x = functionName(); 

披露:我對iOS開發,Objective-C或UIWebView一無所知,但是我能夠快速找到您正在使用的stringByEvaluatingJavaScriptFromString函數,然後通過this page確認,@之後的字符串需要是有效的JavaScript代碼。