欢迎转载,但请务必注明出处!
http://ryanhoo.github.io/blog/2014/09/17/android-webview-setdomstorageenabled
Android WebView 突然无法打开天猫的详情页,一直停留在加载状态。而在此之前,应用里是完全可以正常访问的,通过搜索,找到解决方法,简单设置一行代码
webView.getSettings().setDomStorageEnabled(true)
即可解决问题,但背后的原因又是什么呢?
我们不能只是做解决问题的程序员,还要做好奇的程序员,跟我来一探究竟吧。
定位问题
本着发现问题 -> 分析问题 -> 解决问题的步骤,接下来我们要定位问题的来源。
Chrome Inspcet Device
我首先想到的是,Android 4.4 以后的 WebView 是基于 chromium 内核的,这带来了一个福利是,我们可以在 chrome 中 inspect device,像普通网页一样,进行 debug,精准、快速定位问题来源。正好我手头有 Nexus 5 刷的是 Android L Preview 还有 Mi3 是最新的 MIUI V6,打开 Chrome,Tools
-> Inspect Devices
,就可以看到原生应用里的 WebView 页面了。
点击 inspect
即可进入 Developer Tools,一切尽在掌控,可以清楚看到 console 输出的错误信息。
Android Logcat
实际上,网页加载中 js 输出的错误信息也完整的打印在了 Logcat 中。
09-17 11:28:20.265 25993-25993/ I/chromium﹕ [INFO:CONSOLE