【发布时间】:2017-08-13 00:28:51
【问题描述】:
我有一个带有 Web 视图的应用程序,我在其中加载启用了 JavaScript 的 HTML 内容。 Web 视图位于片段内。
这就是我在片段的方法 onCreateView 中初始化 Web 视图的方式:
WebView webview = (WebView) mainView.findViewById(R.id.webview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDisplayZoomControls(false);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDomStorageEnabled(true);
webSettings.setSupportMultipleWindows(true);
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
/*
* My code
*/
}
});
webview.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView.HitTestResult result = view.getHitTestResult();
String data = result.getExtra();
if (data != null) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
startActivity(browserIntent);
}
return false;
}
});
webview.loadDataWithBaseURL(baseUrl, htmlData, "text/html", "utf-8", "");
在 web 视图中,地图是使用 JavaScript 加载的。在这张地图上,我们可以点击元素并加载照片。单击时,照片会显示在弹出窗口中(仍在网络视图中)。当我点击返回按钮返回地图时,应用程序崩溃了。
这是错误日志:
A/libc:致命信号 5 (SIGTRAP),tid 949 中的代码 1 (Chrome_InProcRe) [03-21 11:26:08.510 364:364 W/] 调试器:处理请求:pid=32610 uid=10289 gid=10289 tid=949
我在 Android 7.1.1、6.0.1、5.0.2 上测试并遇到了崩溃。然后我尝试使用 Android 4.4.2,应用程序没有崩溃。
当我点击后退按钮时(正如我们在 GIF 上看到的那样),它应该回到之前的状态并关闭弹出窗口
【问题讨论】:
-
你是在设备还是模拟器上测试?请在 loadDataWithBaseUrl() 之前设置一个 webchromeclient,如下所示: webview .setWebChromeClient(new WebChromeClient());
-
对于 Javascript 调试,最好覆盖 WebChromeClient 中的 onConsoleMessage
-
@user2281606 它在模拟器上运行良好。另外,我已经在设置 webchrome 客户端。我在我的问题中编辑了代码。我尝试通过远程调试查看日志developers.google.com/web/tools/chrome-devtools/… 但没有日志
-
你有没有解决过这个@Eddybrtn?我看到的是一样的。我认为这与启用硬件加速有关,因为当我禁用硬件加速时,这些崩溃报告会消失……但是我的“慢速渲染”指标会飞涨……卡在岩石和坚硬的地方之间:-(
-
@drmrbrewer 我想我们永远不会知道
标签: javascript java android webview android-webview