Hbuilder中敲mheader生成的代码块,会自动生成带有返回导航箭头的标题栏,点击返回箭头可关闭当前页面,缘由就是由于该返回箭头包含.mui-action-back类,代码以下:web
<header class="mui-bar mui-bar-nav"> <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a> <h1 class="mui-title">标题</h1> </header>
若但愿在顶部导航栏以外的其它区域添加关闭页面的控件,只须要在对应控件上添加.mui-action-back类便可,以下为一个关闭按钮示例:框架
<button type="button" class='mui-btn mui-btn-danger mui-action-back'>关闭</button>
mui框架封装的页面右滑关闭功能,默认未启用,若要使用右滑关闭功能,须要在mui.init();方法中设置swipeBack参数,以下:异步
mui.init({ swipeBack:true //启用右滑关闭功能 });
mui框架默认会监听Android手机的back按键,而后执行页面关闭逻辑; 若不但愿mui自动处理back按键,可经过以下方式关闭mui的back按键监听;函数
mui.init({ keyEventBind: { backbutton: false //关闭back按键监听 } });
除了如上三种操做外,也能够直接调用mui.back()方法,执行窗口关闭逻辑;ui
mui.back()仅处理窗口逻辑,若但愿在窗口关闭以前再处理一些其它业务逻辑,则可将业务逻辑抽象成一个具体函数,而后注册为mui.init方法的beforeback参数;beforeback的执行逻辑为:spa
示例:从列表打开详情页面,从详情页面再返回后但愿刷新列表界面,此时可注册beforeback参数,而后经过自定义事件通知列表页面刷新数据,示例代码以下:.net
mui.init({ beforeback: function(){ //得到列表界面的webview var list = plus.webview.getWebviewById('list'); //触发列表界面的自定义事件(refresh),从而进行数据刷新 mui.fire(list,'refresh'); //返回true,继续页面关闭逻辑 return true; } });
注意:beforeback的执行返回必须是同步的(阻塞模式),若使用nativeUI这种异步js(非阻塞模式),则可能会出现意想不到的结果;好比:经过plus.nativeUI.confirm()弹出确认框,可能用户还没有选择,页面已经返回了(beforeback同步执行完毕,无返回值,继续执行mui.back()方法,nativeUI不会阻塞js进程):在这种状况下,若要自定义业务逻辑,就须要复写mui.back方法了;以下为一个自定义示例,每次都须要用户确认后,才会关闭当前页面:code
//备份mui.back,mui.back已将窗口关闭逻辑封装的比较完善(预加载及父子窗口),所以最好复用mui.back var old_back = mui.back; mui.back = function(){ var btn = ["肯定","取消"]; mui.confirm('确认关闭当前窗口?','Hello MUI',btn,function(e){ if(e.index==0){ //执行mui封装好的窗口关闭逻辑; old_back(); } }); }