Javascript Cordova 3.2.0中未触发DeviceRady事件
我正在使用Cordova3.2.0-0.3.0和NetBeans7.4开发Cordova应用程序。尽管它在手机的Chrome浏览器中正常工作,但无论是在我的手机(Android 4.1.2)还是在模拟器(Android 4.3,API级别18)中,它似乎都无法正常工作。Javascript Cordova 3.2.0中未触发DeviceRady事件,javascript,android,cordova,Javascript,Android,Cordova,我正在使用Cordova3.2.0-0.3.0和NetBeans7.4开发Cordova应用程序。尽管它在手机的Chrome浏览器中正常工作,但无论是在我的手机(Android 4.1.2)还是在模拟器(Android 4.3,API级别18)中,它似乎都无法正常工作。 问题似乎是,devicerady事件从未触发 代码如下: app.onReady = function(callback) { $(document).ready(function() { // are
问题似乎是,
devicerady
事件从未触发
代码如下:
app.onReady = function(callback) {
$(document).ready(function() {
// are we running in native app or in browser?
window.isphone = false;
if (document.URL.indexOf("http://") === -1
&& document.URL.indexOf("https://") === -1) {
window.isphone = true;
}
if (window.isphone) {
alert("isPhone");
document.addEventListener("deviceready", callback, false);
} else {
callback();
}
});
};
app.onReady(function(){ alert("test"); });
“test”从未显示。问题可能是在DOM就绪之前,即在执行
$(document.ready()
回调之前,触发了deviceready
事件
您应该尝试独立于$(document.ready()
绑定到deviceready
。
请参阅如何执行此操作的示例。正如ignitor猜测的那样,我忘了包含
cordova.js
尽管我必须说,在我的辩护(:P)中,包含一个脚本是很奇怪的,就像它不在你的根目录下一样(至少在浏览器中测试时)。可能重复愚蠢的问题:你确定
cordova-x.js
包含正确吗?不应该是这样。Cordova文档说:“DeviceRady事件的行为与其他事件有所不同。在DeviceRady事件激发后注册的任何事件处理程序都会立即调用其回调函数。”因此,如果DeviceRady事件在最初激发后附加,则它应该立即返回。(我突然遇到了与作者相同的问题,但这在过去对我有效。)哦。这句话出现在2.2.0版中。所以问题是,这个特性是在2.2.0中引入的,还是在2.2.0之前没有被记录在案。另一方面,op使用的是3.2.0,所以它毕竟不重要-/为了在浏览器中进行测试,您可以考虑使用浏览器中的一些CordoVAPI来模拟。我使用CLI工具创建了CordoVa项目,并且不知何故假设依赖性将被自动注入到根目录HTML中。显然不是,所以我也犯了错误。