Phonegap deviceready vs document ready

时间:2012-10-12 18:09:18

标签: javascript cordova

我遇到手机设备就绪事件的问题。我在iOS 6.0下测试。

当触发设备就绪时,DOM尚未就绪。如果我将事件绑定到deviceready事件侦听器中的某些DOM元素,我将不会收到任何通知,因为这些元素在此时间不存在。

那么等待BOTH完成加载的最佳做法是什么 - DOM和phonegap?

3 个答案:

答案 0 :(得分:3)

如果你正在使用jquery试试这个

$(document).ready(function(){

    document.addEventListener("deviceready",onDeviceReady,false);       
});

function onDeviceReady(){
    //write your function body here

}

如果您使用的是javascript,请尝试此操作

if(document.readyState === "complete") {
  document.addEventListener("deviceready",onDeviceReady,false); 
}

function onDeviceReady(){
        //write your function body here

    }

答案 1 :(得分:1)

尝试这样的事情:

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

function onDeviceReady(){
  // Now safe to use the PhoneGap API
}

然后:

<body onload="onLoad()">

这将确保在调用deviceready之前DOM已准备好

答案 2 :(得分:0)

我使用基于PhoneGap的应用获得的最佳体验是使用FastClick库并初始化您的应用:

<script type="text/javascript" src="vendor/fastclick/lib/fastclick.js"></script>

<script type="text/javascript">
    window.addEventListener('load', function() {
        FastClick.attach(document.getElementById('container'));

        document.addEventListener('deviceready', function () {
            // Initialize your app here
        });
    });
</script>

您还可以查看此answer以获取有关文档加载事件的更多详细信息。

FastClick必须用于消除物理点击与触发移动浏览器上点击事件之间300毫秒的延迟。