无法从java调用javascript方法

时间:2014-07-15 14:27:10

标签: javascript android cordova webview android-webview

我无法从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!

我该如何解决这个问题?

2 个答案:

答案 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()