2012-02-09 102 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代码。