Cordova - 已弃用尝试访问属性&useraegent'在非Navigator对象上

时间:2014-10-30 13:53:42

标签: javascript ios google-maps cordova

我正在尝试让我的Cordova iPhone应用程序在iOS 8.1中运行

在7中工作正常,因为8我收到以下错误:

Deprecated attempt to access property 'userAgent' on a non-Navigator object.

这打破了页面中应用的渲染,所以我需要修复。我已经看过网络上提出的各种解决方案,但似乎都没有。

有趣的是,错误来自从“https://maps.gstatic.com/maps-api-v3/api/js/17/17/main.js”检索到的JS。 ---也许是我试图使用的Google Maps API的一部分?

任何关于此事的帮助都会很棒!

非常感谢

克里斯

2 个答案:

答案 0 :(得分:14)

您使用的是哪种Cordova版本?

现在应该在最新版本中修复,但如果您不想更新项目,可以在cordova.js文件中更改replaceNavigator函数(其他全部是新的)< / p>

function replaceNavigator(origNavigator) {
        var CordovaNavigator = function() {};
        CordovaNavigator.prototype = origNavigator;
        var newNavigator = new CordovaNavigator();
        // This work-around really only applies to new APIs that are newer than Function.bind.
        // Without it, APIs such as getGamepads() break.
        if (CordovaNavigator.bind) {
            for (var key in origNavigator) {
                if (typeof origNavigator[key] == 'function') {
                    newNavigator[key] = origNavigator[key].bind(origNavigator);
                } else {
                    (function(k) {
                        Object.defineProperty(newNavigator, k, {
                            get: function() {
                                return origNavigator[k];
                            },
                            configurable: true,
                            enumerable: true
                        });
                    })(key);
                }
            }
        }
        return newNavigator;
    }

答案 1 :(得分:0)

看起来像cordova中的一个已知问题,可以通过更新你的cordova版本(以及插件?)来解决这个问题。

来自Cordova Jira

  

如果您想获得修复,只需执行以下操作:

     
      
  1. 克隆cordova-js(版本3.7)
  2.   
  3. Grunt git,这将创建所有本机js文件。
  4.   
  5. 替换platform_www文件夹中的cordova.js
  6.