妄想社成员 发表于 2023-1-14 16:49:30

关闭非固定标签页或非活动标签页新方法,更加便捷实用

本帖最后由 妄想社成员 于 2023-1-14 16:51 编辑

之前的办法,虽然效果很完美,但架不住命令太复杂繁琐,是我绕了个大弯实现的,
运行中每次打开标签页都会执行非常多的命令,难免怀疑会拖慢系统速度。


如图,需要很多麻烦的命令一同组合才能实现效果,其中应用到的标签页的api只有一个closed的关闭api,发掘潜力其实还很大。

昨天晚上研究能不能固定一个标签页,随着一个又一个的思路行不通,翻看标签页源码的时间也越来越长,我察觉到了一个被经常使用的api,
refreshTabTitle(uid,pagename)
这个api的名字虽然是刷新标签页标题的意思,但测试了一下效果其实是刷新标签页头部,根据tabList重新生成了头部的dom结构
所以昨天的固定标签页功能使用这个api也顺利实现了。

回过头,我也想能否在这个的基础上再实现一次关闭其他所有标签页,不需要活字格命令参与,只需调用一个函数即可的那种!
尝试中也在再次意识碰壁到,这个插件中tabList的遍历操作有限制,各种循环遍历和递归都试了一遍,都不行。。。

最后实现了,采用简单的对象深拷贝实现!

下附上demo,效果为标签页的固定与关闭其他所有标签页。
只需在母版页按钮上执行一个js函数即可,再无须在其他地方添加各种命令!
**** Hidden Message *****
var filterTab = function () {
var inst = this.parent.TabManager.TabContainer.getCurrentInstance(window),
    t = inst.tabList,
    activeTab = inst.activeTab,
    newTabList = [];
for (var i = 0; i < t.length; i++) {
    if (t.pageName == activeTab.pageName || t.canBeClosed !== true) {
      newTabList.push(t);
    }
}
this.parent.TabManager.TabContainer.getCurrentInstance(window).tabList =
    JSON.parse(JSON.stringify(newTabList));
console.log("t", t);
inst.refreshTabTitle(activeTab.uid, activeTab.pageName);
};



---------------------------------------------------------------------------------------------------------------
往期精彩回顾:
简易商城实现:活字格简易商城链接
一键关闭标签页实现:一键关闭非当前标签页
单标签页刷新:单标签页单独刷新
道德清单自律应用实现:道德清单应用



oaerp 发表于 2023-1-14 16:59:32

学习,看看是怎么实现的:):):)

clashfree 发表于 2023-1-14 21:25:59

学习了:):)

amtath 发表于 2023-1-14 22:03:40

顶楼主啦..希望楼主多发精品好帖啦.....

丶夫诸 发表于 2023-1-15 10:25:28

666666666666

小田 发表于 2023-1-16 09:50:15

1111111111111111

数据民工 发表于 2023-1-16 22:09:47

感谢分享,活字格的潜力无穷无尽

unimaallan 发表于 2023-1-16 22:43:08

顶楼主啦..希望楼主多发精品好帖啦.....

samlxr 发表于 2023-1-20 16:40:14

66

jinxinwork 发表于 2023-1-22 21:57:36

下附上demo,效果为标签页的固定与关闭其他所有标签页。
页: [1] 2 3 4 5 6
查看完整版本: 关闭非固定标签页或非活动标签页新方法,更加便捷实用