Android手机硬件后退按钮没有触发"后退按钮"事件,有时

时间:2017-08-01 18:51:47

标签: jquery cordova hybrid-mobile-app phonegap

我正在开发基于混合应用程序的phonegap(版本6+)。我最近注意到,在按下Android移动硬件后退按钮时,在以下情况下不会触发phonegap "backbutton"事件:

  1. 输入或textarea元素处于焦点,软键盘启动: 在这种情况下,硬件后退按钮关闭软键盘,但是元素都没有焦点,也没有"backbutton"事件被触发
  2. 选择元素已打开,在这种情况下,硬件后退按钮会导致select元素关闭,但不会触发"backbutton"事件,并且select元素不会触发{{ 1}}或blur事件
  3. 在谷歌上搜索我可以看到这似乎是一个已知的问题,但是,我的问题是:第一种情况有一种解决方法,我可以听取窗口focusout事件。但是对于第二种情况,即选择元素关闭,我不确定如何捕获该事件? resizeblur无法正常工作。有没有解决方法或解决方案呢?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果你想要一个解决方法,那么你可以设置函数来检查点击是否打开或关闭选择框然后如果它打开假设置变量为真并关闭然后如下所示为假。

//set variable global
var clickedDropdown;

$("select").bind("click", function () {
    var clickedDropdown = $(this);

    if (clickedDropdown.data('open') == false) {
        clickedDropdown.data('open', true);
        console.log(this.name + "   open");
        //Your code goes here
    } else {
        clickedDropdown.data('open', false);
        console.log(this.name + "   closed");
        //Your code goes here
    }
});

<强>更新

$(document).ready(function(){
    setTimeout(function(){
        document.addEventListener('backbutton', function(e){
            if (clickedDropdown.data('open') == true) {
                 $( "select" ).trigger( "click" );
                //or
                //You can set blur or focusout event if dropdown already open
            } else {
                //You can set another function for backbutton pressed event
            }
        });
    },500);
});