aunsen
小狐狸
小狐狸
  • UID34416
  • 注册日期2010-11-03
  • 最后登录2024-03-27
  • 发帖数56
  • 经验63枚
  • 威望0点
  • 贡献值32点
  • 好评度4点
  • 社区居民
  • 忠实会员
阅读:3597回复:10

FF76+ BMMultiColumn 书签自动排列脚本失效

楼主#
更多 发布于:2020-05-07 16:17
location.href.startsWith('chrome://browser/content/browser.x') && (function () {
    if (window.BMMultiColumn) {
        window.BMMultiColumn.destroy();
        delete window.BMMultiColumn;
    }
      
    var BMMultiColumn = {
        cachedMenus: [],
        init: function () {
            $('PlacesToolbarItems').addEventListener('popupshowing', this, false);
            var pop = $('BMB_bookmarksPopup');
            if (pop) {
                pop.addEventListener('popupshowing', this, false);
                pop.addEventListener('click', this, false);
            }
        },
        destroy: function () {
            $('PlacesToolbarItems').removeEventListener('popupshowing', this, false);
            var pop = $('BMB_bookmarksPopup');
            if (pop) {
                pop.removeEventListener('popupshowing', this, false);
                pop.removeEventListener('click', this, false);
            }
      
            var i = 0;
            for (i = 0; i < this.cachedMenus.length; i++) {
                var menu = this.cachedMenus;
                if (menu && menu._x_inited) {
                    menu._x_scrollbox.width = '';
                    if( menu._scrollBox && menu._scrollBox.style){
                        menu._scrollBox.style.maxHeight = "";
                    }
                          
                    menu.style.maxWidth = "";
      
                    var container = menu._x_box;
                    if(container){
                        container.style.minHeight = "";
                        container.style.height = "";
                        container.style.display = "";
                        container.style.flexFlow = "";
                        container.style.overflow = "";
                    }
      
                    delete menu._x_scrollbox;
                    delete menu._x_inited;
                    delete menu._x_box;
                }
            }
            this.cachedMenus = [];
        },
        handleEvent: function (event) {
            var menupopup;
            if (event.target.tagName == 'menu') {
                menupopup = event.target.menupopup;
            } else if (event.target.tagName == 'menupopup') {
                menupopup = event.target;
            } else return;
            if (!menupopup) return;
            //没有初始化或换过位置,重新设置属性
            if (!menupopup.firstChild) return;
      
            if (!menupopup._x_inited || !menupopup._x_scrollbox.scrollWidth) {
                var scrollbox = menupopup.shadowRoot.querySelector('[part=popupbox]');
   
                var box = scrollbox.shadowRoot.querySelector('[part=scrollbox]');
   
                if (box) {
                    menupopup._x_box = box;
                    menupopup._x_scrollbox = scrollbox;
                    if (!menupopup._x_inited) {
                        menupopup._x_inited = true;
                        this.cachedMenus.push(menupopup);
                    }
                }
                var container = menupopup._x_box;
                if(container){
                    container.style.minHeight = "21px";
                    container.style.height = "auto";
                    container.style.display = "inline-flex";
                    container.style.flexFlow = "column wrap";
                    //container.style.overflow = "auto";
                    container.style.overflow = "-moz-hidden-unscrollable";
                    menupopup._scrollBox.style.maxHeight = "calc(100vh - 129px)";
                }
                menupopup.style.maxWidth = "calc(100vw - 20px)";
            }
            if (menupopup._x_inited) {
                if (!(menupopup._x_scrollbox.clientWidth == menupopup._x_box.scrollWidth)) {
                    menupopup._x_scrollbox.width = menupopup._x_box.scrollWidth;
                }
                //弹出菜单点击bug,要计算两次
                if (event.type == "click") {
                   if (!(menupopup._x_scrollbox.clientWidth == menupopup._x_box.scrollWidth)) {
                       menupopup._x_scrollbox.width = menupopup._x_box.scrollWidth;
                   }
                }
                //如果菜单数量或者文字宽度发生变化,可能会多出空区域,重新计算下
                var menuitem = menupopup.lastChild;
                while (menuitem) {
                    if (!menuitem.style.maxWidth) {
                        menuitem.style.maxWidth = "300px";
                        menuitem.style.minWidth = "100px";
                    }
                    menuitem = menuitem.previousSibling;
                }
      
                var lastmenu = menupopup.lastChild;
                while (lastmenu) {
                    if (lastmenu.scrollWidth >= 90) break;
                    lastmenu = lastmenu.previousSibling;
                }
      
                if (lastmenu && lastmenu.scrollWidth >= 90) {
                    var pos1 = lastmenu.x - 0 + lastmenu.clientWidth;
                    var pos2 = menupopup._x_box.x - 0 + menupopup._x_box.clientWidth;
                    if (pos2 - pos1 > 30) {
                        menupopup._x_scrollbox.width = "";
                        menupopup._x_scrollbox.width = menupopup._x_box.scrollWidth;
                    }
                }
            }
        }
    }
    BMMultiColumn.init();
    window.BMMultiColumn = BMMultiColumn;
      
    function $(id) {
        return document.getElementById(id);
    }
})();
@lonely_8 拜托了!
zhouhuajdsh
小狐狸
小狐狸
  • UID49842
  • 注册日期2015-04-27
  • 最后登录2020-12-25
  • 发帖数19
  • 经验18枚
  • 威望0点
  • 贡献值4点
  • 好评度0点
  • 社区居民
  • 忠实会员
1楼#
发布于:2020-05-08 16:46
盒妹没失效,我们76用的好好的
cn2000
小狐狸
小狐狸
  • UID38517
  • 注册日期2012-03-24
  • 最后登录2020-05-26
  • 发帖数3
  • 经验12枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2020-05-08 18:04
我的原生的失效了,连带标签多行也失效
aunsen
小狐狸
小狐狸
  • UID34416
  • 注册日期2010-11-03
  • 最后登录2024-03-27
  • 发帖数56
  • 经验63枚
  • 威望0点
  • 贡献值32点
  • 好评度4点
  • 社区居民
  • 忠实会员
3楼#
发布于:2020-05-08 18:15
zhouhuajdsh:盒妹没失效,我们76用的好好的回到原帖
休想骗我
crisco
小狐狸
小狐狸
  • UID57196
  • 注册日期2019-07-17
  • 最后登录2021-03-08
  • 发帖数13
  • 经验28枚
  • 威望0点
  • 贡献值16点
  • 好评度1点
  • 社区居民
4楼#
发布于:2020-05-09 09:18
cn2000:我的原生的失效了,连带标签多行也失效回到原帖
多行标签有脚本可用 https://github.com/Endor8/userChrome.js/tree/master/Mutirowtabs/Firefox-73
Firefox...
cn2000
小狐狸
小狐狸
  • UID38517
  • 注册日期2012-03-24
  • 最后登录2020-05-26
  • 发帖数3
  • 经验12枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2020-05-09 10:29
crisco:多行标签有脚本可用 https://github.com/Endor8/userChrome.js/tree/master/Mutirowtabs/Firefox-73回到原帖
收下试试,谢谢热心回复帮助
lonely_8
非常火狐
非常火狐
  • UID30273
  • 注册日期2009-09-03
  • 最后登录2022-08-09
  • 发帖数733
  • 经验469枚
  • 威望0点
  • 贡献值86点
  • 好评度147点
  • 社区居民
  • 忠实会员
6楼#
发布于:2020-05-10 16:30
[part=popupbox]
改为
[part=arrowscrollbox]
aunsen
小狐狸
小狐狸
  • UID34416
  • 注册日期2010-11-03
  • 最后登录2024-03-27
  • 发帖数56
  • 经验63枚
  • 威望0点
  • 贡献值32点
  • 好评度4点
  • 社区居民
  • 忠实会员
7楼#
发布于:2020-05-10 17:21
lonely_8:改为回到原帖
感谢感谢,立竿见影!
shinco20
小狐狸
小狐狸
  • UID16208
  • 注册日期2006-12-13
  • 最后登录2024-03-30
  • 发帖数19
  • 经验28枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
8楼#
发布于:2021-09-02 14:43
lonely_8:改为回到原帖
大神,这个脚本在91版本又失效了,应该怎么改?找了一圈没找到好用的,非常感谢
lonely_8
非常火狐
非常火狐
  • UID30273
  • 注册日期2009-09-03
  • 最后登录2022-08-09
  • 发帖数733
  • 经验469枚
  • 威望0点
  • 贡献值86点
  • 好评度147点
  • 社区居民
  • 忠实会员
9楼#
发布于:2021-09-02 15:12
shinco20:大神,这个脚本在91版本又失效了,应该怎么改?找了一圈没找到好用的,非常感谢回到原帖
同一个地方改为
::part(arrowscrollbox)
shinco20
小狐狸
小狐狸
  • UID16208
  • 注册日期2006-12-13
  • 最后登录2024-03-30
  • 发帖数19
  • 经验28枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 社区居民
  • 忠实会员
10楼#
发布于:2021-09-03 08:15
lonely_8:同一个地方改为
::part(arrowscrollbox)
回到原帖
谢谢
游客

返回顶部