我需要在 WebView
中调用一个包含一些 javascript 的网站。 JavaScript 调用嵌套对象中的方法,如下所示:
window.plugins.anObject.method();
我需要拦截对 method()
的调用,并在调用时执行某些操作(即 Java 中 method()
的 native 实现)。如果没有那个plugins
对象,我就会这么做
myWebView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void method() {
// yay!
}
}, "anObject");
但正如我所写,anObject
必须是另一个 plugins
对象的子对象。所以我尝试用 "plugins.anObject"
替换 "anObject"
但这不起作用。有什么办法可以实现这一目标吗?
最佳答案
使用情况:
window.plugins.anObject.method();
也许你可以尝试这个:
网页 View 代码:
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
};
});
关于java - 如何在 Android 中添加嵌套对象作为 JavascriptInterface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510294/