我无法从Java调用JavaScript方法!
我将其包含在主java文件中:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
cordova_webview.getSettings().setJavaScriptEnabled(true);
cordova_webview.addJavascriptInterface(jsInterface, "JSInterface");
@Override
protected void onPause() {
super.onPause();
cordova_webview.loadUrl("javascript:punish()");
Log.d(TAG, "onPause");
}
但是我在logacat中遇到了这个错误:
07-15 17:25:18.490: D/CORDOVA_ACTIVITY(6422): onPause
07-15 17:25:18.495: D/CordovaLog(6422): null: Line 1 : Uncaught ReferenceError: punish is not defined
07-15 17:25:18.495: E/Web Console(6422): Uncaught ReferenceError: punish is not defined at null:1
方法在index.js中,它包含在html中。
但是我尝试通过<script>
标记将该方法包含在html中并执行,但仅限于onResume!
我该如何解决这个问题?
答案 0 :(得分:1)
你可以试试这个,在你的javascript代码中设置:
window.fn = punish;
然后从你的android代码调用window.fn():
cordova_webview.loadUrl("javascript:window.fn()");
'fn'在这里并不特别。我们只是想让你的功能发挥作用 可见或可访问。 'window'对象已经可以访问了,所以 我们只是在那里设置你的功能参考。所以,例如,
window.myFunc1 = punish;
..也没关系。我不完全确定为什么这是必需的, 但无论如何我都在这里张贴。
答案 1 :(得分:0)
实际上这是有所作为的,现在它可以正常工作: window.fn =在我的JS代码中惩罚,然后从你的android代码中调用window.fn()