在index.html的监听事件
1 var flage = true; 2 window.addEventListener("hashchange", myFunction); 3 function myFunction() { 4 // console.log(location.hash) 5 //这里根据自己根目录而定 6 if(location.hash == '#/' || location.hash == '#/login' || location.hash == '#/login/index1'){ 7 flage = false 8 }else{ 9 flage = true 10 } 11 }
改变mui.js
1 wobj.canBack(function(e) { 2 //by chb 暂时注释,在碰到类似popover之类的锚点的时候,需多次点击才能返回; 3 // alert(!!e.canBack) 4 //本来是e.canBack 改为flage 接收到主页返回的flage,从而判断是连点两次退出应用还是返回历史记录(主要改变这里) 5 if (flage) { //webview history back 6 window.history.back(); 7 } else { //webview close or hide 8 //fixed by fxy 此处不应该用opener判断,因为用户有可能自己close掉当前窗口的opener。这样的话。opener就为空了,导致不能执行close 9 if (wobj.id === plus.runtime.appid) { //首页 10 //首页不存在opener的情况下,后退实际上应该是退出应用; 11 //首次按键,提示‘再按一次退出应用’ 12 if (!$.__back__first) { 13 $.__back__first = new Date().getTime(); 14 mui.toast('再按一次退出应用'); 15 setTimeout(function() { 16 $.__back__first = null; 17 }, 2000); 18 } else { 19 if (new Date().getTime() - $.__back__first < 2000) { 20 plus.runtime.quit(); 21 } 22 } 23 } else { //其他页面, 24 if (wobj.preload) { 25 wobj.hide("auto"); 26 } else { 27 //关闭页面时,需要将其打开的所有子页面全部关闭; 28 $.closeAll(wobj); 29 } 30 } 31 } 32 });
总结:当页面的路径为'#/', '#/login','#/login/index1'(你想连点两次退出应用的路径)时,监听事件生效!否则返回历史记录!