1

我需要调用一个包含一些 javascript 的网站WebView。javascript 调用嵌套对象中的方法,如下所示:

window.plugins.anObject.method();

当它被调用时,我需要拦截该调用method()并做一些事情(即Java中的本机实现method())。没有那个plugins对象,我会做

myWebView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void method() {
        // yay!
    }
}, "anObject");

但正如我所写,anObject必须是另一个plugins对象的孩子。所以我尝试的是替换"anObject""plugins.anObject"但这不起作用。有什么办法可以做到这一点?

4

1 回答 1

-1

使用说明:

window.plugins.anObject.method();

也许你可以试试这个:

网页浏览代码:

myWebView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void anObject() {
        return new Object(){
             @JavascriptInterface
             public void method() {
                 //yay!
             }
        }
    }
}, "plugins");

js代码:

window.plugins.anObject().method();

笔记:

返回给您的 js 的 NPObject 根本不是一个常见的 javascript 对象,您无法迭代此对象,也无法在 webview 中定义时重新定义您的成员函数,如下所示:

$(function(){
var old_method = window.plugins.method;
window.plugins.method = function(){
    //do some thing
    old_method();
    //do another thing
};
});
于 2014-07-15T01:43:17.343 回答