我遇到手机设备就绪事件的问题。我在iOS 6.0下测试。
当触发设备就绪时,DOM尚未就绪。如果我将事件绑定到deviceready
事件侦听器中的某些DOM元素,我将不会收到任何通知,因为这些元素在此时间不存在。
那么等待BOTH完成加载的最佳做法是什么 - DOM和phonegap?
答案 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毫秒的延迟。