【发布时间】:2016-04-26 12:21:48
【问题描述】:
我创建了一个android WebView,并使用addJavascriptInterface(mObject, "jsinterface") 注入了javascript 接口。在我使用 new 运算符在 JavaScript 中创建具有相同名称(jsinterface)的对象之前,它工作正常。
我的 Java 代码:
WebView mWebView = findViewById(R.id.myWebView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new MyWebChromeClient((Activity)mContext));
mWebView.addJavascriptInterface(new testClass(), "jsinterface");
mWebView.loadUrl("UrlToLoad");
testClass.java
public class testClass{
public testClass() {
}
@JavascriptInterface
public String testNativeMethod() {
return "Java method called!!";
}
}
我的 Java 脚本代码
test.js
function test(msg){
this.message = msg;
this.testJSMethod = function(){
return this.message;
}
}
alert(jsinterface.testNativeMethod()); // prints Java method called!!
jsinterface= new test("JS method called...");
alert(jsinterface.testJSMethod()); // prints JS method called...
alert(jsinterface.testNativeMethod()); // errors "NPMethod called on non- NPObject"
问题:
javascript 对象是否可以同时访问两者,即javascript 方法和本机JAVA 方法(通过javascriptinterface 暴露给它)?是否有可能将任何属性设置为 webview 或执行任何 JS script 来完成这项工作?
【问题讨论】:
标签: javascript java android webview