cordova 2.9.x iOS 8 userAgent bug

时间:2014-07-16 15:20:04

标签: ios cordova ios8

我正在使用带有phonegap的Cordova 2.9.0来构建iOS应用程序 在iOS 8中,我收到

的错误消息
Deprecated attempt to access property 'geolocation' on a non-Navigator object.

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

我尝试了EddyVerbruggen的解决方案 https://gist.github.com/EddyVerbruggen/cd02c73162180793513e

但是,我收到Cordova的错误消息

此外,当我的应用程序完全加载时,我使用

没有问题
window.navigator.userAgent 

1 个答案:

答案 0 :(得分:3)

所有的拳头,它似乎只是一个警告,应用程序工作正常。

他们已经解决了这个问题,我很快就会提供它,但是对于使用cordova 2.9.X的人来说,我们必须在replaceNavigator文件中更改cordova.js函数。整个其他都是新的)

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;
    }