#chrome #OneTab
背景
OneTab 是 chrome 上的一个插件,可以用来一键关闭所有打开的页面,并且可以在下次一键恢复所有已关闭的页面,可以说非常方便。但是随着时间的积累,插件页面上的 url 会越来越多,导致插件响应越来越慢。插件并没有管理 url 相关的功能,所以需要想办法解决。
需求
OneTab 页面上的 url 都是按照标签组的形式展现的,考虑在标签组维度进行处理,需要满足如下功能:
- 清空所有的标签组
- 清空某个时间以前的标签组
- 保留标星或者锁定的标签组
实现
在 OneTab 页面 console 上执行 javascript 代码即可。只要通过标签选择器筛选出对应的标签,然后执行鼠标点击事件。
删除所有标签组
function confirm() {
return true;
} // 覆盖 confirm 方法,一直返回确认
nodelist = document.querySelectorAll('#tabGroupsDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(3)'); // 筛选出所有的删除标签
nodelist.forEach(function(ele, index, list) {
setTimeout(function() {
ele.click();
},
1000 * index);
}); // 模拟点击事件,执行删除,此方法会删除所有的标签
支持删除指定日期以前的标签组,保留星标和锁定标签组
function confirm() {
return true;
} // 覆盖 confirm 方法,一直返回确认
var nodelist = document.querySelectorAll('#tabGroupsDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(3)'); // 筛选出所有的删除标签
var createTimeNodeList = document.querySelectorAll('#tabGroupsDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(1)');
var startNodelist = document.querySelectorAll('#tabGroupsDiv > div > div:nth-child(1) > div > picture.starImg');
var lockNodelist = document.querySelectorAll('#tabGroupsDiv > div > div:nth-child(1) > div > picture.lockImg');
var startTime = new Date('2022-12-02 14:08:55'); // 指定删除的开始时间
nodelist.forEach(function (ele, index, list) {
// 校验是否为星标标签组,锁定标签组
if (startNodelist[index].style.display != 'none' || lockNodelist[index].style.display != 'none') {
console.log('this group is start or lock, not delete')
return;
}
var ct = createTimeNodeList[index].innerText.substring(4);
console.log(ct);
console.log(Date.parse(ct));
console.log(startTime.getTime());
if (Date.parse(ct) < startTime.getTime()) {
setTimeout(function () {
ele.click();
},
1000 * index);
console.log('clicked')
}
});
最后
感兴趣的小伙伴可以再做一些魔改🤯,实现一些有趣的功能。