钉钉微应用 Android返回键自定义功能 兼容
问题
最新的钉钉文档
导航栏左侧显示的是标题,若想在Android设备上拦截返回按钮的行为,请参考事件回调。
那么dd.biz.navigation.setLeft函数只能用于IOS端,碰到产品提出编辑页面做出改变返回需要提醒窗的这种需求,是不是懵逼了?
对事件的监听
var clickFunction = (e) => {e.preventDefault();// do something here};document.addEventListener(\"backbutton\", clickFunction, false);
移除监听
document.removeEventListener(\"backbutton\", clickFunction, false);
单页应用
不幸的是,上面的代码只能在非单页应用起作用。因为返回按钮是绑定在document上的时间,然而SPA document是不变的。对于这个蛋疼的问题,也只能曲线救国一下了
解决思路
分两步
- 每次路由跳转,重写监听事件
- 执行过一次立即移除监听
改造下上面的代码
var clickFunction = (e) => {e.preventDefault();if (document.location.pathname === YOURROUTER) {// do something}document.removeEventListener(\"backbutton\", clickFunction, false);};document.addEventListener(\"backbutton\", clickFunction, false);
移除监听是因为以免多次进入路由页面,生成多个监听,一下子返回好几个页面?
还有一个小坑
因为重写了全部页面back,所以打开的首页没有页面可以返回,也不可以关闭。这是可以重新首页back,或者应用有可能有其他页面分享出去,可以根据history来判断是不是进入的第一个页面。