【问题标题】:Cordova: always deviceready has not firedCordova:总是 deviceready 没有触发
【发布时间】:2018-02-08 13:51:25
【问题描述】:

我对 Cordova 有另一个问题。我想在 Cordova 7.1.0 中使用插件“cordova.custom.plugins.exitapp”和“cordova-plugins-printer”。
在服务器端,我将 document.AddEventListener 构建到 $(document).ready(function() {});

.js:

$(document).ready(function(){

...

document.addEventListener("deviceready", exitFromApp, false);

...

}),


function exitFromApp() {

    console.log("NAVIGATOR: " + navigator);
    console.log("NAVIGATOR.APP: " + navigator.app);
    console.log("NAVIGATOR.APP.EXITAPP: " + navigator.app.exitApp());

    navigator.app.exitApp();
}


无论我是否使用 addEventListener,Android Studio 总是说:
- deviceready 在 5 秒后未触发​​。
- 频道未触发:onPluginsReady
- 频道未触发:onCordovaReady

但不同的是addEventListener不调用exitFromApp()函数。
当我直接调用exitFromApp() 时,它可以工作,但 navigator.app 未定义(或 cordova.plugins / window.plugins 未定义)。
cordova.js 在 header.php 中调用,因此始终可用。

如果我通过平板电脑上的 index.html 使用插件,它可以工作。

我已经在config.xml中设置了权限:

<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

安装:
科尔多瓦 7.1.0
cordova-plugin-inappbrowser 2.0.1
cordova-plugin-network-信息 2.0.1
cordova-plugin-whitelist 1.3.3
cordova.custom.plugin.exitapp 1.0.0
phonegap.plugin-barcodescanner 7.0.1
cordova-plugin-printer 0.7.3

【问题讨论】:

    标签: javascript android cordova cordova-plugins


    【解决方案1】:

    deviceready 事件在 $(document).ready() 之前被触发,你想在两者都被触发后做你的事情..试试这个..

    var DomReady = new Promise(done=>$(document).ready(done));
    var deviceReady = new Promise(done=>document.addEventListener("deviceready", done, false));
    Promise.all[DomReady, deviceReady].then(()=>{
      // both device and dom are ready
    });
    

    ... 或者您可以将 deviceReady 调用放在 documetnt 就绪调用之外,因为我确信设备就绪将始终是第一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多