javascript - 从 3.3.0 更新到 3.6.4 后,Cordova 未启动 deviceready

标签 javascript android cordova jquery-mobile

我有一个适用于 Android 的 cordova + jquerymobile 应用程序,其中包含一个本地插件列表。 一切都很好,直到我使用“cordova platform update adnroid”命令将 cordova 从 3.3.0 更新到 3.6.4。 在此更新之后,cordova 不会在某些设备上触发 deviceready 事件。

我已经就类似问题对 stackoverflow 进行了研究,但没有找到任何可以帮助我的东西。

有什么想法吗? txh 提前寻求帮助

最佳答案

当您查看日志时,您可能会看到如下内容:

D/CordovaLog( 3770): file:///android_asset/www/cordova.js: Line 512 : Uncaught TypeError: Cannot set property connection of #<a Navigator> which has only a getter

没有捕获到异常,所以这就是故事的结尾。 修复非常简单,并已提交到下一个版本。

我手动应用了 diff,它似乎有效。我能够向一位受影响的用户确认该应用程序现在可以正常运行。

diff --git a/src/common/builder.js b/src/common/builder.js
index 826820d..75d3ea7 100644
--- a/src/common/builder.js
+++ b/src/common/builder.js
@@ -31,9 +31,14 @@ function each(objects, func, context) {

 function clobber(obj, key, value) {
     exports.replaceHookForTesting(obj, key);
-    obj[key] = value;
+    var needsProperty = false;
+    try {
+        obj[key] = value;
+    } catch (e) {
+        needsProperty = true;
+    }
     // Getters can only be overridden by getters.
-    if (obj[key] !== value) {
+    if (needsProperty || obj[key] !== value) {
         utils.defineGetter(obj, key, function() {
             return value;
         }); 

有关详细信息,请参阅这两个链接,其中提供了所有详细信息。基本上,为 iOS8 支持添加了一些代码,它对某些版本的 android 有不好的副作用。

  1. https://issues.apache.org/jira/browse/CB-7868
  2. TypeError "Cannot set property connection of #<Navigator>" in console when upgrading project to latest version of Cordova 4.0.0

关于javascript - 从 3.3.0 更新到 3.6.4 后,Cordova 未启动 deviceready,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243067/

相关文章:

javascript - iOS 上的 Jquery 移动 - 动量滚动可防止调用单击处理程序

cordova - 我们可以将 cordova InAppBrowser 放入 HTML 的一部分,而不是覆盖整个屏幕吗?

android - 无法调试 apache cordova 应用程序

javascript - fetch API 采用的第二个参数到底是什么?

java - 我有错误 "Call requires API level 11 (current min is 8)"。这是我在我的项目(ECLIPSE)中可以找到的

android - 错误 :(27, 13) 无法解析 : com. google.firebase:firebase-core

android - 如何实现对使用 ListAdapater、ArrayList 和 HashMap 的 ListView 的搜索

javascript - 如何更改用户代理?

javascript - 从 javascript 外部文件无法从 HTML 文件获取 id 并替换内容

javascript - 如何捕获文本中某个单词后面出现的多个数字?