我还有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总是说:
- 5秒钟后设备已经没有发射
- 频道未被解雇:onPluginsReady
- 频道未被解雇:onCordovaReady
但不同之处在于addEventListener
不会调用exitFromApp()
函数。
当我直接调用exitFromApp()
时,它可以正常工作,但navigator.app未定义(或者未定义cordova.plugins / window.plugins)。
在header.php中调用cordova.js,因此始终可用。
如果我在平板电脑上通过index.html使用插件,它可以正常工作。
我已在 config.xml 中设置了权限:
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />
安装:
Cordova 7.1.0
cordova-plugin-inappbrowser 2.0.1
cordova-plugin-network-information 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
答案 0 :(得分: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就绪调用之外,因为我确信设备就绪状态始终是第一个。