10

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

当 device ready 被触发时,DOM 还没有准备好。如果我将事件绑定到事件侦听器中的某些 DOM 元素deviceready,我将不会收到任何通知,因为这些元素在此早期不存在。

那么等到 DOM 和 phonegap 都完成加载的最佳实践是什么?

4

3 回答 3

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

    }
于 2014-04-21T16:47:32.067 回答
1

尝试这样的事情:

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

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

然后:

<body onload="onLoad()">

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

于 2012-11-09T21:22:21.887 回答
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>

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

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

于 2014-04-22T13:32:17.573 回答