【问题标题】:Detecting the Javascript method which is executed in webview检测在 webview 中执行的 Javascript 方法
【发布时间】:2012-04-12 02:08:54
【问题描述】:

我在我的uiwebview 中显示URL,它工作正常。

所以网页实际上包含一些 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; 已被弃用,这是问题所在吗?

【问题讨论】:

    标签: ios objective-c uiwebview dom-events uitapgesturerecognizer


    【解决方案1】:

    你需要修改远程网页上的 JavaScript 来设置一个全局变量与当前运行的函数的名字,像这样:

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

    然后在 iOS 端,您可以通过将代码更改为:

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

    这有意义吗?

    【讨论】:

    • 我无法更改网页,因为我没有权限。它仍然无法正常工作。
    • 如果不更改服务器端 JS,您将无法完成此操作。
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多