【问题标题】:javascript not working in android 3.0javascript 在 android 3.0 中不起作用
【发布时间】:2011-12-15 14:39:08
【问题描述】:

我在以下链接中找到了一个示例应用程序

http://code.google.com/p/chaek/

该应用程序是一个 epub 阅读器,单片眼镜库,其中加载了图书,并用于按每一页进行更改。该应用程序的主要部分基于 java 脚本代码。

当我在我的 android 手机中运行代码时,它工作正常,电子书被加载并且我能够更改它的页面,当我在我的三星平板电脑 android 3.1 中尝试应用程序时,这本书被加载但没有能够逐页更改它的逐章更改。

当我尝试打印一些日志错误时,我只从我的平板电脑中得到以下行

[METHOD] void openChapter(chapNo:1)
[CALLBACK_WV] void onPageStarted(view:android.webkit.WebView@40d32f58, url:file:///mnt/sdcard/gisbook/.9789026324710/OEBPS/html/, favicon:null)
[CALLBACK_WV] void onPageFinished(view:android.webkit.WebView@40d32f58, url:file:///mnt/sdcard/gisbook/.9789026324710/OEBPS/html/)
javascript:getTotalPageNum()
javascript:openPageByPercentage(0.0)
Uncaught ReferenceError: getTotalPageNum is not defined at null:1
Uncaught ReferenceError: openPageByPercentage is not defined at null:1

而在安卓手机中,上述行如下

 [CALLBACK_WV] void onPageStarted(view:android.webkit.WebView@44f4a130, url:file:///sdcard/.9789026324710/OEBPS/html/, favicon:null)
 [CALLBACK_WV] void onPageFinished(view:android.webkit.WebView@44f4a130, url:file:///sdcard/.9789026324710/OEBPS/html/)
 javascript:getTotalPageNum()
 javascript:openPageByPercentage(0.0)
 [BRIDGE] void setTotalPageNum(page:1)
 [METHOD] void selectBookmark()

为什么安卓手机和平板有这么大的区别,是不是安卓平板ie3.0及以上版本的webview有问题

我与代码的作者分享了这个问题,他也无法对此有所了解。

当我在谷歌上搜索这个问题时,我遇到很多程序员说在 webview 上工作的 java 脚本有问题。我尝试了他们的大部分答案,但没有用。

谁能解释我或弄清楚为什么会出现这样的错误......请

【问题讨论】:

  • 如果我的理解正确,你会遇到和我一样的问题:stackoverflow.com/questions/8711225/… 到目前为止,我可以说代码在 Androi 2.3 上有效,但在 3.2 的平板电脑上却不行。似乎 DOM 的构建速度太慢了。但只是猜测。
  • 我已经看到你的答案并尝试过,但没有用。总之谢谢....

标签: javascript android webview android-3.0-honeycomb


【解决方案1】:

我遇到了完全相同的错误,它只出现在 Honeycomb and Ice Cream Sandwich 上。在 Gingerbread 上效果很好。

我解决它的方法是使用“<script src=...></script>”而不是“<script src=.../>”。我从不认为这会有所作为,但确实如此。似乎是一个 webkit 错误。

【讨论】:

  • 你必须在你的 WebView 加载的 HTML 中做这个替换。
  • 最好问问 monocle 的作者在哪里可以找到它使用的 HTML。
  • 你问过monocle的作者吗?您是否检查过进行此更改是否可以解决问题?顺便说一句,我提交了一个错误:code.google.com/p/android/issues/detail?id=28840
  • 我和作者聊天,他说他会尝试修复它,这太长了......
【解决方案2】:

scriptElement.setAttribute("src", "url('file:///android_asset/" + path + "')");

需要换成这个:

scriptElement.setAttribute("src", "file:///android_asset/" + 路径);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多