webview模式的选项卡页面,其实是将多个子选项卡对应的webview合并到了一个主webview中,点击选项卡时,动态显示、隐藏对应子webview页面,所有页面是一个整体,通常情况下得逻辑是,返回按键时,关闭主页面;
但若用户希望实现,点击返回时,返回到上一次活跃的子选项卡页面,则需简单定制,实现逻辑很简单:
- 每次点击时,记录上一次活跃的选项卡;
- 自定义返回函数,返回时隐藏当前选项卡,显示上一次活跃的选项卡页面;
如下为示例代码:
//当前激活选项,默认为第一个;
var activeTab = subpages[0];
var lastActiveTabs = new Array();
//选项卡点击事件
mui('.mui-bar-tab').on('tap', 'a', function(e) {
var targetTab = this.getAttribute('href');
if (targetTab == activeTab) {
return;
}
//先隐藏当前的
plus.webview.hide(activeTab);
//再显示目标
plus.webview.show(targetTab);
//记录上次活跃的选项卡
lastActiveTabs.push(activeTab);
//更改当前活跃的选项卡
activeTab = targetTab;
});
mui.back = function(){
if(lastActiveTabs.length>0){
var last = lastActiveTabs.pop();
//先隐藏当前的
plus.webview.hide(activeTab);
//取消当前选项卡的高亮样式
document.querySelector(".mui-bar-tab .mui-active").classList.remove("mui-active");
//再显示历史页面
plus.webview.show(last);
//历史选项卡增加高亮样式
document.querySelector(".mui-bar-tab a[href='http://ask.dcloud.net.cn/"+last+"']").classList.add("mui-active");
//更改当前活跃的选项卡
activeTab = last;
}else{
//不能再退了
}
}
8 个评论
要回复文章请先登录或注册
DCloud_UNI_CHB (作者)
Salazar
6***@qq.com
3***@qq.com
小苏
terlivy
alicezhong
alicezhong