DCloud_App_Array
DCloud_App_Array
  • 发布:2014-11-23 15:12
  • 更新:2014-11-23 15:12
  • 阅读:30974

Android返回键back事件处理兼容性问题,plus.key的监听顺序说明

分类:HTML5+

当前界面只有一个webview时,plus.key的注册时很清晰的。
但当前若有多个webview,或者有父子webview,则需要理清各webview接收key响应的逻辑。

  1. 隐藏的webview是不会接受到按键事件通知的。

  2. Webview嵌套后返回按键事件是按照先子后父的顺序进行分发处理。
    顺序分发到某个子Webview对象监听了backbutton事件:

    plus.key.addEventListener('backbutton',backListener,false);

    则终止返回按键事件的分发处理,如果Webview处于隐藏状态则不处理返回事件。
    即子webview接收到后,父就不再接收了。
    如果业务逻辑操作隐藏了子Webview,事件会正常传递给父Webview。

一般建议统一在父webview注册plus.key的事件,不要在子webview注册。
如果是使用通用js文件默认添加了此事件的监听,则可以通过plus.key.removeEventListener方法取消监听,示例代码如下:

        <script type="text/javascript">  
function backListener(){  
    console.log('backbutton');  
}  
// 开始监听backbutton事件  
function startBack(){  
    plus.key.addEventListener('backbutton',backListener,false);  
}  
// 取消监听backbutton事件  
function stopBack(){  
    plus.key.removeEventListener('backbutton',backListener);  
}  
        </script>
6 关注 分享
大漠野狼 李开源 1***@qq.com 崔大人 8***@qq.com Trust

要回复文章请先登录注册

8***@qq.com

8***@qq.com

之前看到的说什么在初始化的时候用backbutton:false 一点用没有,还是这个可以了
2018-02-27 17:41
多串君

多串君

回复 大漠野狼 :
我是在首页单独新写一个JS文件,把mui.min.js 里面,处理子页面回退的事件改成退出应用。我发现把监听按2次退出的这个代码,移到js文件里面在首页调用,就不会和底部切换卡冲突了。
2014-11-24 09:15
大漠野狼

大漠野狼

回复 大漠野狼 :
我是把plus.ready放在了子webview中。不过偶尔会出现调试的时候有plus is not defined at多个文件报错。不过重新运行即可。不知道怎么回事。
2014-11-23 19:30
大漠野狼

大漠野狼

已经完美解决我的问题,帖子标题“我写的代码按退出键没有反应,应该是子页面没有做处理,求帮助” @多串君,谢谢
2014-11-23 19:29