|
阅读:10488回复:37
突然关闭多个标签页的警告又出来了
由于经常“关闭左/右”,“关闭其他”标签页,这个警告我是早早就取消了的,今天用的时候,这个警告又出来了,而且我去查了一下选项中“warn me when closing multiple tabs”的选项是没有选中的,about:config里面的browser.warnOnClose也是false,可是这个警告依然存在。安全模式下也没用。用最新Nightly的麻烦看一下,谢谢。
|
|
|
|
1楼#
发布于:2012-07-07 10:16
你点上看看呢,说不定选项弄反了
Avast最近就出了这个毛病…… |
|
|
|
2楼#
发布于:2012-07-07 10:16
来回搞几次了啊似乎都没用。
|
|
|
|
3楼#
发布于:2012-07-07 10:16
是呀。我还正苦恼着呢。只能等bug修复了。
|
|
|
4楼#
发布于:2012-07-07 10:16
关于这个问题,我已经确认在最新的16和17版里面
gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);这个内嵌的函数无论如何都会触发那个警告。新建配置,打开多个空白标签页,在标签栏上右键选择“关闭其它标签页”,也无论你在选项中设置是否警告,都会触发警告。 但是我注意到Tab Utilities里面自带的标签右键菜单中有一个自己写的“关闭其他标签页”的功能,不会触发这个警告,它具体实现的代码(tabutil.js)是: //关闭多个标签页
TU_hookCode("gBrowser.warnAboutClosingTabs", /\w+(?= <= 1)/, "($& = arguments[1] ? arguments[1].length : $&)");
gBrowser.removeTabsBut = function removeTabsBut(aTabs, bTabs) {
aTabs = aTabs ? "length" in aTabs ? aTabs : [aTabs] : [];
bTabs = bTabs ? "length" in bTabs ? bTabs : [bTabs] : [];
if (bTabs.length > 0)
aTabs = Array.filter(aTabs, function(aTab) Array.indexOf(bTabs, aTab) == -1);
if (this.warnAboutClosingTabs(true, aTabs)) {
if (Array.indexOf(aTabs, this.mCurrentTab) > -1)
this.selectedTab = bTabs[0] || aTabs[0];
let count = 0;
for (let i = aTabs.length - 1; i >= 0; i--) {
this.removeTab(aTabs[i], {animate: true});
if (aTabs[i].hasAttribute("removing"))
count++;
}
this._lastClosedTabsCount = count;
}
};
TU_hookCode("undoCloseTab", /.*ss.undoCloseTab.*/, "for (let i = aIndex == null ? gBrowser._lastClosedTabsCount || 1 : 1; i > 0; i--) $&;");
gBrowser.closeLeftTabs = function(aTab) this.removeTabsBut(this.leftTabsOf(aTab), aTab);
gBrowser.closeRightTabs = function(aTab) this.removeTabsBut(this.rightTabsOf(aTab), aTab);
gBrowser.closeOtherTabs = function(aTab) this.removeTabsBut(this.otherTabsOf(aTab), aTab);
gBrowser.closeDuplicateTabs = function(aTab) this.removeTabsBut(this.duplicateTabsOf(aTab), aTab);
gBrowser.closeSimilarTabs = function(aTab) this.removeTabsBut(this.similarTabsOf(aTab), aTab);
gBrowser.closeAllTabs = function() this.removeTabsBut(this.allTabs);
gBrowser.closeAllDuplicateTabs = function() this.removeTabsBut(this.allTabs, this.uniqueTabsOf(this.allTabs));后面还有一条 ["context_closeOtherTabs", "gBrowser.removeTabsBut(gBrowser.allTabs, gBrowser.mContextTabs);"] 剥离了一下主要起作用的函数,做成鼠标手势可用的代码如下 //关闭其他标签页
gBrowser.removeTabsBut = function removeTabsBut(aTabs, bTabs) {
aTabs = aTabs ? "length" in aTabs ? aTabs : [aTabs] : [];
bTabs = bTabs ? "length" in bTabs ? bTabs : [bTabs] : [];
if (bTabs.length > 0)
aTabs = Array.filter(aTabs, function(aTab) Array.indexOf(bTabs, aTab) == -1);
if (this.warnAboutClosingTabs(true, aTabs)) {
if (Array.indexOf(aTabs, this.mCurrentTab) > -1)
this.selectedTab = bTabs[0] || aTabs[0];
let count = 0;
for (let i = aTabs.length - 1; i >= 0; i--) {
this.removeTab(aTabs[i], {animate: true});
if (aTabs[i].hasAttribute("removing"))
count++;
}
this._lastClosedTabsCount = count;
}
};
gBrowser.removeTabsBut(gBrowser.allTabs, gBrowser.mContextTabs);//关闭所有标签页
gBrowser.removeTabsBut = function removeTabsBut(aTabs, bTabs) {
aTabs = aTabs ? "length" in aTabs ? aTabs : [aTabs] : [];
bTabs = bTabs ? "length" in bTabs ? bTabs : [bTabs] : [];
if (bTabs.length > 0)
aTabs = Array.filter(aTabs, function(aTab) Array.indexOf(bTabs, aTab) == -1);
if (this.warnAboutClosingTabs(true, aTabs)) {
if (Array.indexOf(aTabs, this.mCurrentTab) > -1)
this.selectedTab = bTabs[0] || aTabs[0];
let count = 0;
for (let i = aTabs.length - 1; i >= 0; i--) {
this.removeTab(aTabs[i], {animate: true});
if (aTabs[i].hasAttribute("removing"))
count++;
}
this._lastClosedTabsCount = count;
}
};
gBrowser.removeTabsBut(gBrowser.allTabs, gBrowser.mContextTabs);
gBrowser.removeCurrentTab(); |
|
|
|
5楼#
发布于:2012-07-07 10:16
测试过,在keyconfig下不生效。
|
|
|
6楼#
发布于:2012-07-07 10:16
KMC版主能否再改进改进
|
|
|
7楼#
发布于:2012-07-07 10:16
我也不熟悉代码啊,我就乱改了改在鼠标手势下生效了,求高人改。
|
|
|
|
8楼#
发布于:2012-07-07 10:16
你说的“不生效”是一点反应也没有,还是关闭不正确?刚刚换了个XP的机器试了试,前面的关闭其他标签页似乎会关闭所有标签页,把最后一句改成
gBrowser.removeTabsBut(gBrowser.allTabs, gBrowser.mCurrentTab); 即可。 |
|
|
|
9楼#
发布于:2012-07-07 10:16
是一点反应都没有
|
|
|
10楼#
发布于:2012-07-07 10:16
我的 firefox 17 没有这个问题,是今早下载的小时版。
|
|
|
11楼#
发布于:2012-07-07 10:16
刚刚下载的最新小时版也没这个问题。不会是和某个标签类扩展冲突了吧。
|
|
|
12楼#
发布于:2012-07-07 10:16
我实在不知道为什么,似乎也只有我跟ybbao碰到。否则这么大的bug就炸锅了。但是我新建配置都一样有这个问题。
|
|
|
|
13楼#
发布于:2012-07-07 10:16
有图有真相
|
|
|
14楼#
发布于:2012-07-07 10:16
新建配置还是如此,郁闷
|
|
上一页
下一页
