如果您有Android WebView,并且使用addJavascriptInterface将接口添加到java对象,是否有办法让Java处理赋值?
JS:
javaObject.x = 10
爪哇:
??
这种事情很好:
javaObject.setX(10)
但是我正在尝试使用现有的javascript代码库,它有很多使用赋值的调用,理想情况下我想尽可能少地进行更改。
答案 0 :(得分:0)
final class DemoJavaScriptInterface {
DemoJavaScriptInterface() {
// code here...
}
public int X ;
}
答案 1 :(得分:0)
根据WebView.addJavascriptInterface()的文档,只能从JavaScript访问Java对象的公共方法。这意味着您无法在Javascript中为Java对象中的类成员变量赋值。
例如:
public class JavaScriptInterface {
public int x;
private int y;
public void setY(int value) {
y = value;
Log.d("JavaScriptInterface", "setY = " + y);
}
}
...
public void onCreate(Bundle b) {
super.onCreate(b);
...
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new JavaScriptInterface(), "Android");
webView.loadUrl(myHtmlFile);
}
位于 myHtmlFile 中的Javascript:
<script type="text/javascript">
Android.x = 10; // this will not work
Android.setY(1000); // this will work!
</script>