cordova应用程序中addEventListener('deviceready')的问题

时间:2017-01-09 05:22:27

标签: javascript cordova addeventlistener

我正在尝试在我的cordova应用程序中使用“Cordova Local-Notification Plugin”但没有成功。例如,以下内容不起作用:

  

console.log(now);

document.addEventListener('deviceready', function() {
    var now = new Date().getTime(),
    _5_sec_from_now = new Date(now + 5 * 1000);
    console.log(now);
    cordova.plugins.notification.local.schedule({
        text:"Delayed Notification",
        at:_5_sec_from_now,
        led:"FF0000",
        sound:null
    });
}, false);

1 个答案:

答案 0 :(得分:1)

Cordova deviceready未开火

检查您的index.html

中是否包含cordova.jsphonegap.js

如果未加载Cordova,则不会触发该事件。

同时检查Xcode中的任何控制台错误。

使用Web Inspector调试Mobile Safari

您可以使用Safari来检查在真实设备上运行的Cordova应用程序。

更多信息:

https://webdesign.tutsplus.com/articles/quick-tip-using-web-inspector-to-debug-mobile-safari--webdesign-8787

enter image description here

在浏览器中工作时,deviceready不会触发,它只会在真实设备上触发。这也意味着您无法在浏览器中轻松测试插件。

要解决此问题,您可以检测是否已加载cordova并自行调用和设置功能。<​​/ p>

function setup() {
    var now = new Date().getTime(),
    _5_sec_from_now = new Date(now + 5 * 1000);
    console.log(now);

    // ** this will not work in browser **
    cordova.plugins.notification.local.schedule({
        text:"Delayed Notification",
        at:_5_sec_from_now,
        led:"FF0000",
        sound:null
    });
}


// check if codova is loaded
if (!!window.cordova){
    // running on device
    // wait for plugins to load
    document.addEventListener('deviceready', setup, false);    
}else{
    // running in browser
    // call setup anyway
    setTimeout(setup, 200);
}