kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
阅读:9059回复:37

突然关闭多个标签页的警告又出来了

楼主#
更多 发布于:2012-07-07 10:16
由于经常“关闭左/右”,“关闭其他”标签页,这个警告我是早早就取消了的,今天用的时候,这个警告又出来了,而且我去查了一下选项中“warn me when closing multiple tabs”的选项是没有选中的,about:config里面的browser.warnOnClose也是false,可是这个警告依然存在。安全模式下也没用。用最新Nightly的麻烦看一下,谢谢。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
pcxfirefox
千年狐狸
千年狐狸
  • UID39042
  • 注册日期2012-06-22
  • 最后登录2018-01-15
  • 发帖数2539
  • 经验1263枚
  • 威望2点
  • 贡献值242点
  • 好评度133点
  • 最爱沙发
  • 忠实会员
  • 社区居民
1楼#
发布于:2012-07-07 10:16
你点上看看呢,说不定选项弄反了

Avast最近就出了这个毛病……
http://pcxfirefox.wordpress.com/
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
2楼#
发布于:2012-07-07 10:16
来回搞几次了啊似乎都没用。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
3楼#
发布于:2012-07-07 10:16
是呀。我还正苦恼着呢。只能等bug修复了。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
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();
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
5楼#
发布于:2012-07-07 10:16
测试过,在keyconfig下不生效。
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
6楼#
发布于:2012-07-07 10:16
KMC版主能否再改进改进
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
7楼#
发布于:2012-07-07 10:16
我也不熟悉代码啊,我就乱改了改在鼠标手势下生效了,求高人改。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
8楼#
发布于:2012-07-07 10:16
你说的“不生效”是一点反应也没有,还是关闭不正确?刚刚换了个XP的机器试了试,前面的关闭其他标签页似乎会关闭所有标签页,把最后一句改成
gBrowser.removeTabsBut(gBrowser.allTabs, gBrowser.mCurrentTab);
即可。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
9楼#
发布于:2012-07-07 10:16
是一点反应都没有
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
10楼#
发布于:2012-07-07 10:16
我的 firefox 17 没有这个问题,是今早下载的小时版。
GOLF-AT
千年狐狸
千年狐狸
  • UID11611
  • 注册日期2006-02-20
  • 最后登录2019-12-30
  • 发帖数3239
  • 经验265枚
  • 威望1点
  • 贡献值260点
  • 好评度59点
  • 社区居民
  • 忠实会员
11楼#
发布于:2012-07-07 10:16
刚刚下载的最新小时版也没这个问题。不会是和某个标签类扩展冲突了吧。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
12楼#
发布于:2012-07-07 10:16
我实在不知道为什么,似乎也只有我跟ybbao碰到。否则这么大的bug就炸锅了。但是我新建配置都一样有这个问题。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
13楼#
发布于:2012-07-07 10:16
有图有真相
ybbao
非常火狐
非常火狐
  • UID27616
  • 注册日期2008-12-29
  • 最后登录2023-05-21
  • 发帖数721
  • 经验53枚
  • 威望0点
  • 贡献值36点
  • 好评度1点
  • 社区居民
14楼#
发布于:2012-07-07 10:16
新建配置还是如此,郁闷
上一页
游客

返回顶部