0

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

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

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"); 

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

4

1 回答 1

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 上得到一个对话框,当我按下 ok 时,javascript 被执行。所以我只是从 JsResult 中调用了确认,就像按下 OK 按钮

   @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;
    } 
于 2016-08-15T17:17:09.420 回答