【发布时间】:2011-10-20 11:15:16
【问题描述】:
(使用三星 Galaxy Tab 和 Android 3.0,这适用于每台 3.0+ 平板电脑,就像在他们的浏览器中一样,只是不是 webview)
我有一个带有 CSS 和 jQuery 的页面,可以在浏览器、android 浏览器和 iOS 设备中正常加载,但 android webview 拒绝始终加载它。
我已经将问题缩小到它只是在加载时跳过 javascript(通过使用一些 webview javascript 演示应用程序复制问题)。这是为什么呢?
这是完整的测试 HTML 代码
http://pastebin.com/GmE2vEYx
我是这样称呼它的:
myWebview.loadUrl("file:///android_asset/myPage.html");
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.setWebChromeClient(new WebChromeClient());
这三个调用的顺序不会影响结果。
myWebview.getSettings().setJavaScriptEnabled(true);
myWebview.setWebChromeClient(new WebChromeClient());
myWebview.loadUrl("file:///android_asset/myPage.html");
我注意到的一件事是,如果您给它时间(通过在调试器中使用断点暂停应用程序),那么 javascript 将更加一致地加载。这让我做了一些牵强附会的实验,试图让应用程序加载速度变慢,但这确实不是用户想要的体验。我真的希望 Android webview 真的不是移动开发的 IE6。
其他事实:
如果您删除包含所有 Jquery 的 <script> 标记,则页面会以所有 CSS 格式快速加载。一旦添加了 Jquery,就什么都没有加载。
我还发现了其他几个遇到完全相同问题的问题,许多问题没有得到解答,或者对 OP 所寻求的内容没有确凿的答案:(
见: Android: can't get javascript to work on WebView even with setJavaScriptEnabled(true)
Page reload (Webview.loadUrl) results in Javascript not being (fully) processed
http://groups.google.com/group/android-developers/browse_thread/thread/9962064ef217a5a7#
JavaScript sometimes doesn't work in android's webview
Android WebView not loading a JavaScript file, but Android Browser loads it fine
Android's Webview cannot handle javascript?
建议?让我们深入了解这一点! android 文档说 webview 有限制,但我不知道那个限制在哪里,因为人们一直在制作 HTML CSS JS 应用程序!
【问题讨论】:
-
如果 JS 有错误应该显示在 adb logcat 中,带有标签“Web Console”或“WebCore”。您在页面上看到任何 JS 错误吗?
标签: javascript android function webview code-injection