电话间隙设备未就绪事件
Phonegap deviceNotReady event?
像其他人一样,我试图区分在移动浏览器中运行的javascript代码和在phonegap webuiview中运行的javascript代码。 标准解决方案是等待 deviceready
事件触发,因为在它触发后,您知道自己处于 phonegap 中。 但是你要等多久?
我有代码想要尽早运行,因为我不希望我的用户坐在那里等待。 但是我不想在初始化 phonegap 之前运行它,如果它要初始化的话。 我正在寻找的是一个类似于devicenotready
事件的东西,当 cordova.js
代码运行并确定它没有要附加到的内容时,它会触发。 或者我可以轮询一些变量来区分科尔多瓦仍在加载和科尔多瓦放弃尝试加载之间的区别。 有区别吗?
我讨厌这个解决方案,但它是我想出的最好的解决方案。 请告诉我还有比这更好的东西:
function whenLoaded(callback,timeout) {
var when_loaded_needs_running = true;
document.addEventListener('deviceready', function() {
if( when_loaded_needs_running ) {
when_loaded_needs_running = false;
callback();
} else {
console.log("deviceready fired too late. whenLoaded already ran.");
}
});
window.setTimeout(function() {
if( when_loaded_needs_running ) {
when_loaded_needs_running = false;
console.log("deviceready didn't fire after "+timeout+"ms. running whenLoaded anyway.");
callback();
}
}, timeout);
}
一个更简单的测试是查看 JavaScript 全局cordova
是否可用 - 无需等待事件,您可以立即执行(只要它在包含 cordova.js 的理论<script>
之后执行)。根据您运行的 PhoneGap 版本,您可能需要测试几个全局变量之一。
应该像这样简单:
if(cordova || Cordova || PhoneGap) {
alert('hey im in a phonegap webview!');
} else {
alert('regular old browser, aw shucks');
}
相关文章:
- 如何编写单个 Jquery 函数以在文档更改和就绪事件时触发
- Whic 规范定义就绪事件
- 事件侦听器更新就绪在加载时未显示确认,而更新实际存在
- 在文档就绪时触发更改事件
- 即使使用jQuery DOM就绪事件,也无法调用null的方法addEventListener()
- 如何在angular js中监听dom就绪事件
- Froogaloop Vimeo API--Can't在就绪事件之外调用API方法
- 动态添加聚合物元素的就绪事件
- 电话间隙设备未就绪事件
- 绑定到就绪事件和具有一个匿名函数的另一个事件
- 加载 HTML 页面和脚本后的 AJAX 就绪事件
- JSNI (GWT-GWTP):jQuery在就绪事件触发后不会在“文档就绪”函数中选择节点
- PhoneGap设备就绪事件未启动
- 在加载和就绪事件之前,将图像大小获取到全局变量中
- Jquery绑定&就绪事件
- Javascript/jQuery:文件下载就绪事件
- 替换为之后的Dom就绪事件
- 暂停jQuery就绪事件,直到多个HTML DOM更新完成
- TinyMCE初始化应该在dom就绪事件内
- jQuery更改文本后的高度段落就绪事件