更新新的Android System Webview后,Javascript不会在onJAlert回调中执行

时间:2016-08-15 10:11:36

标签: javascript android webview webchromeclient

|在最新更新的Android系统Webview(52.0.2743.98)之后,我注意到javascript无法使用onJsAlert方法执行。

更具体地说,以下一段代码在最新更新后停止工作

private class MyWebChromeClient extends WebChromeClient {

    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

            view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})());

        return super.onJsAlert(view, url, message, result);
    }

}

我还检查过界面设置是否正确

  mWebView.setWebChromeClient(new MyWebChromeClient());

    WebSettings webSettings = mWebView.getSettings();      
    webSettings.setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new CustomInterface(), "CustomInterface"); 

有没有人遇到同样的问题?

1 个答案:

答案 0 :(得分:0)

当我为onJAlert

返回false时,给出了解决方案的提示
 @Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

            view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})());

        return false;
    } 

如果客户端返回true,WebView将假定客户端将处理该对话框。如果客户端返回false,它将继续执行。因此,通过返回false,我的UI上有一个对话框,当我按下确定时,javascript被执行了。所以我刚从JsResult打来电话确认,就像按下确定按钮一样

   @Override 
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            result.confirm();
            view.loadUrl(javascript:(function(){CustomInterface.completeAction(document.head.innerHTML)})());

        return true;
    }