|在最新更新的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");
有没有人遇到同样的问题?
答案 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;
}