我遇到了 phonegap 设备就绪事件的问题。我在 iOS 6.0 下测试。
当 device ready 被触发时,DOM 还没有准备好。如果我将事件绑定到事件侦听器中的某些 DOM 元素deviceready
,我将不会收到任何通知,因为这些元素在此早期不存在。
那么等到 DOM 和 phonegap 都完成加载的最佳实践是什么?
我遇到了 phonegap 设备就绪事件的问题。我在 iOS 6.0 下测试。
当 device ready 被触发时,DOM 还没有准备好。如果我将事件绑定到事件侦听器中的某些 DOM 元素deviceready
,我将不会收到任何通知,因为这些元素在此早期不存在。
那么等到 DOM 和 phonegap 都完成加载的最佳实践是什么?
如果你正在使用 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
}
尝试这样的事情:
function onLoad(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){
// Now safe to use the PhoneGap API
}
然后:
<body onload="onLoad()">
这将确保在调用 deviceready 之前 DOM 已准备就绪
我使用基于 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 毫秒延迟。