gpt4 book ai didi

java - 如何在 Android 中添加嵌套对象作为 JavascriptInterface?

转载 作者:行者123 更新时间:2023-11-28 10:57:09 26 4
gpt4 key购买 nike

我需要在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com