DCloud_UNI_CHB
DCloud_UNI_CHB
  • 发布:2014-10-09 17:17
  • 更新:2014-10-09 17:17
  • 阅读:22129

选项卡页面如何实现后退返回上一个活跃的子选项卡

分类:MUI

webview模式的选项卡页面,其实是将多个子选项卡对应的webview合并到了一个主webview中,点击选项卡时,动态显示、隐藏对应子webview页面,所有页面是一个整体,通常情况下得逻辑是,返回按键时,关闭主页面;

但若用户希望实现,点击返回时,返回到上一次活跃的子选项卡页面,则需简单定制,实现逻辑很简单:

  1. 每次点击时,记录上一次活跃的选项卡;
  2. 自定义返回函数,返回时隐藏当前选项卡,显示上一次活跃的选项卡页面;

如下为示例代码:

    //当前激活选项,默认为第一个;  
    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{  
            //不能再退了  
        }  
    }
16 关注 分享
Curtis Joshua Rhett2014 缘多多 小伟 alicezhong 小苏 y***@outlook.com 堕落到妖灬 Trust 9***@qq.com Dojoson shwanYu d***@foxmail.com 鲸鱼风风 3***@qq.com

要回复文章请先登录注册

DCloud_UNI_CHB

DCloud_UNI_CHB (作者)

回复 Salazar :
subpages保存选项卡跳转的目标地址,是一个数组,自己定义;或者参考Hello MUI中的webview模式的选项卡,有类似代码
2017-09-14 14:44
Salazar

Salazar

请问这个subpages[0];是怎么定义的?我这里一直显示" subpages is not defined" @DCloud_MUI_CHB
2017-09-14 14:30
6***@qq.com

6***@qq.com

选项卡,返回上一个活动的选项卡,mark
2017-04-11 10:10
3***@qq.com

3***@qq.com

Uncaught TypeError: Cannot read property 'classList' of null,为什么我的报classList为空
2016-10-26 15:03
小苏

小苏

mark
2016-04-13 16:08
terlivy

terlivy

只是针对web APP 有没有web 版本的活wap版本的
2016-03-01 16:11
alicezhong

alicezhong

明白了
2016-01-05 08:32
alicezhong

alicezhong

classList.add("mui-active") 历史选项卡增加高亮样式 无效,什么原因呢
2016-01-05 00:25