检测在webview中执行的javascript方法

时间:2012-03-28 13:12:16

标签: iphone objective-c javascript-events uiwebview uitapgesturerecognizer

我在URL中显示uiwebview并且它正常运行。

因此,网页实际上包含一些javascript函数(fun1,fun2,fun3 ...),一旦我在webview上选择了一些部分,就会执行。

所以我的要求是检测通过webview选择正在执行的javascript方法。

所以我在webview上实现了UITapGestureRecognizer

[myWebView addGestureRecognizer:tapGestureRecognizer]; 

现在,一旦我在webview上选择了以下方法,就会调用

-(void)singleTap:(UIGestureRecognizer *)gestureRecognizer
{

   [myWebView stringByEvaluatingJavaScriptFromString:@"function getItem(){ var functionName =arguments.callee.name; alert(functionName);}getItem()"];

}

但是我没有得到执行的javascript方法,我怎么能得到这个?

注意:在某处我读过arguments.callee.name;已被弃用,那问题是什么?

1 个答案:

答案 0 :(得分:1)

您需要修改远程网页上的JavaScript,以使用当前运行的函数名称设置全局变量,如下所示:

var CURRENT_FUNCTION = '';
function someFunction() {
    CURRENT_FUNCTION = 'someFunction()';
}

然后,从iOS端,您可以通过更改代码来完成此操作:

NSString *currentFunction = [myWebView stringByEvaluatingJavaScriptFromString:@"return CURRENT_FUNCTION"];

这有意义吗?