Javascript Cordova 3.2.0中未触发DeviceRady事件

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

我正在使用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 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中。显然不是,所以我也犯了错误。