检查deviceready上的navigator.globalization在iOS上返回undefined

时间:2012-11-29 01:23:24

标签: ios cordova

我在iOS上使用PhoneGap 2.2.0并绑定到devicready事件以查看是否存在navigator.globalization对象。我未定义。

我的代码如下所示:

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady()
{
    alert('deviceready');
    navigator.globalization.getLocaleName(function(d)
    {
        window.localStorage.setItem('localeLanguage', d.value);
        console.log('localeLanguage: is'+d.value);
    },
    function(error)
    {
        console.log('error getting locale language');
    });
}

alert('deviceready')永远不会开火。我真的很茫然。我按如下方式设置脚本。

<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" src="cordova-2.2.0.js"></script>
<script type="text/javascript">
    //alert(typeof navigator.globalization);
</script>
<script src="js/jquery.ui.map.full.min.js"></script>
<script src="js/jquery.ui.map.services.min.js"></script>
<script src="js/jquery.i18n.min.js"></script>
<script src="js/languages.js"></script>
<script src="js/oakglobalization.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
    app.initialize();
</script>
<script type="text/javascript" src="js/custom.js"></script>

任何想法都会有所帮助,因为这是一个showstopper。

2 个答案:

答案 0 :(得分:0)

尝试:

$(document).ready(function() {  
    document.addEventListener("deviceready", onDeviceReady, false); 
});

添加事件监听器。

也许可以尝试更新您的cordova版本。当前版本是2.6.0。

另一点:使用phonegap,使用Navigator.notification.alert方法而不是本机javascript警报。更多信息here

希望这有帮助!再见!

答案 1 :(得分:0)

不确定你是否解决了,但至少对我来说(PG 3.3.0)使用navigator.globalization我必须安装cordova插件并相应地更改XML。

command-line> cordova plugin add org.apache.cordova.globalization
config.xml>
    <feature name="Globalization">
        <param name="ios-package" value="CDVGlobalization" />
    </feature>

就此而言,它仅仅在真正的iOS xcode模拟器上才能在浏览器模拟器上工作(即:涟漪)...... 备份你的项目以防万一;)