Android 除DeviceRady事件外,任何Cordova事件均不起作用
我正在尝试在我的Android Cordova应用程序中捕获设备事件。但是,除了Android 除DeviceRady事件外,任何Cordova事件均不起作用,android,cordova,events,Android,Cordova,Events,我正在尝试在我的Android Cordova应用程序中捕获设备事件。但是,除了devicerady事件外,没有其他事件被触发。我正在使用DeviceRady事件后Cordova文档中给出的事件。我的Cordova版本6.4.0 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { document.addEventListener("backbutton",
devicerady
事件外,没有其他事件被触发。我正在使用DeviceRady事件后Cordova文档中给出的事件。我的Cordova版本6.4.0
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", function(e){
// My Code here
});
document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false);
function onVolumeDownKeyDown() {
console.log('volume downn')
// Handle the volume down button
}
document.addEventListener("menubutton", onMenuKeyDown, false);
function onMenuKeyDown() {
console.log('menu button')
// Handle the back button
}
document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false);
function onVolumeUpKeyDown() {
console.log('volume up button')
// Handle the volume up button
}
};
请参阅一个问题,将cordova版本更新为6.4.0
会给同一个项目带来错误,该项目在6.2.0
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="cordova.js"></script>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
setTimeout(function(){
try{
document.addEventListener('backbutton', function(e){
alert("Back Button Clicked")
}, false);
}catch(e){
alert(e);
}
}, 500);
}
</script>
</head>
<body>
<div>
<h1>Click Android Back button to see event fired or not</h1>
</div>
</body>
</html>
解决方案是降低科尔多瓦版本的等级,帮助他重新恢复项目
我已经创建了一个测试项目,并将这个index.html
放到了我的测试项目中,它非常适合我,只需尝试将它添加到您的测试项目中,然后告诉我们它是否有效
我的Cordova版本6.2.0
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="cordova.js"></script>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
setTimeout(function(){
try{
document.addEventListener('backbutton', function(e){
alert("Back Button Clicked")
}, false);
}catch(e){
alert(e);
}
}, 500);
}
</script>
</head>
<body>
<div>
<h1>Click Android Back button to see event fired or not</h1>
</div>
</body>
</html>
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数ondevicerady(){
setTimeout(函数(){
试一试{
document.addEventListener('backbutton',函数(e){
警报(“单击后退按钮”)
},假);
}捕获(e){
警报(e);
}
}, 500);
}
单击Android后退按钮查看是否触发事件
这些事件处理程序是在deviceready函数内定义的还是在其外部定义的?如backbutton事件所示。@Blauharley它们是在该链接中给出的deviceReady事件触发后定义的。您插入的代码是可以的,但是仍然有代码丢失,导致调用此代码太早。如何包装这些处理程序?请检查我的更新代码。这就是我调用这些事件的方式。正如@Blauharley所说,您的函数调用这些代码太早了,只需将超时时间添加到不同的侦听器中,最短时间为1秒