333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
阅读:2118回复:14

【已解决】UndoCloseTabBtn.uc脚本在65Nightly下不能运行,请大家帮忙,谢谢

楼主#
更多 发布于:2018-12-04 11:10
// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gmail.com
// @description         可移动恢复已关闭标签按钮
// @author               defpt
// @charset              UTF-8
// @Compatibility        FF57+
// @version              v2018.04.04 更新兼容57+ by runningcheese
// @version              v2014.09.15
// ==/UserScript==
(function() {
        var buttonAttrs = {
                id: "undoclosetab-button",
                label: "恢复最后关闭的标签",
                tooltiptext: "左键:恢复最后关闭的标签\n右键:显示关闭标签菜单",
                class: "toolbarbutton-1 chromeclass-toolbar-additional",
                removable: "true",
                context: "_child", //点击按钮恢复最后一次关闭的标签
                                   //如果想左键恢复最后一次关闭的标签,右键打开已关闭标签列表,那么改为(context: "_child",)
                                   //如果想改成菜单形式的,那么改为(type: "menu-button",)
                image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABuUlEQVRIib2VL08DQRDFKxANqahErijJte/N5pI2oQlNuA+AqEBUkHAJAkMIAhJERYNBICr4ABUIFKlEIBA4DAJRgUBUIJpgKioqitkry8H9CxcmmeQutzu/eTO5mULhP4xkA0Ar6ruIOCR3SZ4A6JrnRhaAR3JqQ5RSRQDHJMckFxE+JtlzXbccCwDQMRemAFpaa5J8jQkc9ncRaccBfOvw1HjwPhORvjnTAFAB0BGRfkjdXEQOo2rs/5YZgIGIbEUlJiKOAc3MnQ8Ae0kKlvUFsBZb2y9Qm+Tc3Jv86AnJo4ja3lar1fU0EJKXlvLz8MdeTAOHnuetJAFc1y1bPZlkASwAXKVU0bPuuN/ojuOoOE+jAsCOBfDTJJXJarXahqX8NHeA+UEDBd3cASJyYCnYzx0AYBAAtNbNvINvknwxgKd6vb6aK4DkfZB95EyysimJyBmAUprgZkcEwe+SDq8FUgG8kfSizppF9Gg1dpI4vwBUSI7sMUzy2YzsjvELkkNrwAVjfjuN4mCu3GRYOCOtNVMFD6lpkbwOLaDlIiL5AMBPM0ZiTSlVNPX2SHpa66ZSqvinoHnZJ3jLDwknYoRNAAAAAElFTkSuQmCC",
                command: "History:UndoCloseTab"
        };
           
        var uCTBtn = $C('toolbarbutton', buttonAttrs);
   
        var popup = uCTBtn.appendChild($C("menupopup", {
                oncommand: "event.stopPropagation();",
                onpopupshowing: "this.parentNode.populateUndoSubmenu();",
                context: "",
                tooltip: "bhTooltip",
                popupsinherittooltip: "true"
        }));
        uCTBtn._getClosedTabCount = HistoryMenu.prototype._getClosedTabCount;
        uCTBtn.populateUndoSubmenu = eval("(" + HistoryMenu.prototype.populateUndoSubmenu.toString().replace(/\.undoTabMenu/g, "") + ")");
           
        // 来自 User Agent Overrider 扩展
    const log = function() { dump(Array.slice(arguments).join(' ') + '\n'); };
    const trace = function(error) { log(error); log(error.stack); };
    const ToolbarManager = (function() {
   
        /**
         * Remember the button position.
         * This function Modity from addon-sdk file lib/sdk/widget.js, and
         * function BrowserWindow.prototype._insertNodeInToolbar
         */
        let layoutWidget = function(document, button, isFirstRun) {
   
            // Add to the customization palette
            let toolbox = document.getElementById('navigator-toolbox');
            toolbox.palette.appendChild(button);
   
            // Search for widget toolbar by reading toolbar's currentset attribute
            let container = null;
            let toolbars = document.getElementsByTagName('toolbar');
            let id = button.getAttribute('id');
            for (let i = 0; i < toolbars.length; i += 1) {
                let toolbar = toolbars<i>;
                if (toolbar.getAttribute('currentset').indexOf(id) !== -1) {
                    container = toolbar;
                }
            }
   
            // if widget isn't in any toolbar, default add it next to searchbar
            if (!container) {
                if (isFirstRun) {
                    container = document.getElementById('nav-bar');
                } else {
                    return;
                }
            }
   
            // Now retrieve a reference to the next toolbar item
            // by reading currentset attribute on the toolbar
            let nextNode = null;
            let currentSet = container.getAttribute('currentset');
            let ids = (currentSet === '__empty') ? [] : currentSet.split(',');
            let idx = ids.indexOf(id);
            if (idx !== -1) {
                for (let i = idx; i < ids.length; i += 1) {
                    nextNode = document.getElementById(ids<i>);
                    if (nextNode) {
                        break;
                    }
                }
            }
   
            // Finally insert our widget in the right toolbar and in the right position
            container.insertItem(id, nextNode, null, false);
   
            // Update DOM in order to save position
            // in this toolbar. But only do this the first time we add it to the toolbar
            if (ids.indexOf(id) === -1) {
                container.setAttribute('currentset', container.currentSet);
                document.persist(container.id, 'currentset');
            }
        };
   
        let addWidget = function(window, widget, isFirstRun) {
            try {
                layoutWidget(window.document, widget, isFirstRun);
            } catch(error) {
                trace(error);
            }
        };
   
        let removeWidget = function(window, widgetId) {
            try {
                let widget = window.document.getElementById(widgetId);
                widget.parentNode.removeChild(widget);
            } catch (error) {
                trace(error);
            }
        };
   
        let exports = {
            addWidget: addWidget,
            removeWidget: removeWidget,
        };
        return exports;
    })();
           
    ToolbarManager.addWidget(window, uCTBtn, false);
        document.insertBefore(document.createProcessingInstruction('xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent('\
                #undoclosetab-button menuitem {max-width: 240px;}\
                ') + '"'), document.documentElement);
                  
        function $C(name, attr) {
                var el = document.createElement(name);
                if (attr) Object.keys(attr).forEach(function(n) { return el.setAttribute(n, attr[n]);});
                return el;
        }
})();</i></i>
lonely_8
狐狸大王
狐狸大王
  • UID30273
  • 注册日期2009-09-03
  • 最后登录2019-05-26
  • 发帖数446
  • 经验212枚
  • 威望0点
  • 贡献值72点
  • 好评度58点
  • 社区居民
1楼#
发布于:2018-12-05 13:21
// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gmail.com
// @description         可移动恢复已关闭标签按钮
// @author               defpt
// @charset              UTF-8
// @Compatibility        FF57+
// @version              v2018.04.04 更新兼容57+ by runningcheese
// @version              v2014.09.15
// ==/UserScript==
(function() {
    if(document.getElementById('undoclosetab-button')) return;
 
    CustomizableUI.createWidget({
        id: 'undoclosetab-button',
        label: '恢复最后关闭的标签',
        tooltiptext: '左键:恢复最后关闭的标签\n右键:显示关闭标签菜单',
        defaultArea : CustomizableUI.AREA_NAVBAR,
        onCreated: (uCTBtn) => {
            uCTBtn.setAttribute('context', '_child'); //点击按钮恢复最后一次关闭的标签
                               //如果想左键恢复最后一次关闭的标签,右键打开已关闭标签列表,那么改为(context: "_child",)
                               //如果想改成菜单形式的,那么改为(type: "menu-button",)
            uCTBtn.setAttribute('command', 'History:UndoCloseTab');
 
            uCTBtn.appendChild($C('menupopup', {
                oncommand: 'event.stopPropagation();',
                onpopupshowing: 'this.parentNode.populateUndoSubmenu();',
                context: '',
                tooltip: 'bhTooltip',
                popupsinherittooltip: 'true'
            }));
            uCTBtn._getClosedTabCount = HistoryMenu.prototype._getClosedTabCount;
            uCTBtn.populateUndoSubmenu = eval('(' + HistoryMenu.prototype.populateUndoSubmenu.toString().replace(/\.undoTabMenu/g, '') + ')');
        }
    });
 
 
    document.insertBefore(document.createProcessingInstruction(
        'xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent('\
            #undoclosetab-button menuitem {max-width: 240px;}\
            #undoclosetab-button .toolbarbutton-icon {list-style-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABuUlEQVRIib2VL08DQRDFKxANqahErijJte/N5pI2oQlNuA+AqEBUkHAJAkMIAhJERYNBICr4ABUIFKlEIBA4DAJRgUBUIJpgKioqitkry8H9CxcmmeQutzu/eTO5mULhP4xkA0Ar6ruIOCR3SZ4A6JrnRhaAR3JqQ5RSRQDHJMckFxE+JtlzXbccCwDQMRemAFpaa5J8jQkc9ncRaccBfOvw1HjwPhORvjnTAFAB0BGRfkjdXEQOo2rs/5YZgIGIbEUlJiKOAc3MnQ8Ae0kKlvUFsBZb2y9Qm+Tc3Jv86AnJo4ja3lar1fU0EJKXlvLz8MdeTAOHnuetJAFc1y1bPZlkASwAXKVU0bPuuN/ojuOoOE+jAsCOBfDTJJXJarXahqX8NHeA+UEDBd3cASJyYCnYzx0AYBAAtNbNvINvknwxgKd6vb6aK4DkfZB95EyysimJyBmAUprgZkcEwe+SDq8FUgG8kfSizppF9Gg1dpI4vwBUSI7sMUzy2YzsjvELkkNrwAVjfjuN4mCu3GRYOCOtNVMFD6lpkbwOLaDlIiL5AMBPM0ZiTSlVNPX2SHpa66ZSqvinoHnZJ3jLDwknYoRNAAAAAElFTkSuQmCC")}\
    ') + '"'), document.documentElement);
               
    function $C(name, attr) {
        var el = document.createElement(name);
        if (attr) Object.keys(attr).forEach(function(n) { return el.setAttribute(n, attr[n]);});
        return el;
    }
})();
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
2楼#
发布于:2018-12-05 14:24
lonely_8:// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gmail.com
// @des...
回到原帖
问题解决了,还是大佬厉害,每次遇到脚本问题都是你解决的,再次感谢万分
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
3楼#
发布于:2019-05-24 22:39
lonely_8:// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gmail.com
// @des...
回到原帖
FF67有问题,第二次运行主程序看不到图标
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
4楼#
发布于:2019-05-24 23:43
kidzgy:FF67有问题,第二次运行主程序看不到图标回到原帖
找到这个文件夹startupCache
删除此文件夹下面全部文件
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
5楼#
发布于:2019-05-25 00:46
333ywb:找到这个文件夹startupCache
删除此文件夹下面全部文件
回到原帖
67下profiles文件夹里没有这个文件夹了,藏在\LocalAppData里,也被我删除了,没有效果
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
6楼#
发布于:2019-05-25 13:05
kidzgy:67下profiles文件夹里没有这个文件夹了,藏在\LocalAppData里,也被我删除了,没有效果回到原帖




这个可以用,我的67版本正常使用
// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gmail.com
// @description         可移动恢复已关闭标签按钮
// @author               defpt
// @charset              UTF-8
// @Compatibility        FF57+
// @version              v2018.04.04 更新兼容57+ by runningcheese
// @version              v2014.09.15
// ==/UserScript==
(function() {
    if(document.getElementById('undoclosetab-button')) return;
  
    CustomizableUI.createWidget({
        id: 'undoclosetab-button',
        label: '恢复最后关闭的标签',
        tooltiptext: '左键:恢复最后关闭的标签\n右键:显示关闭标签菜单',
        defaultArea : CustomizableUI.AREA_NAVBAR,
        onCreated: (uCTBtn) => {
            uCTBtn.setAttribute('context', '_child'); //点击按钮恢复最后一次关闭的标签
                               //如果想左键恢复最后一次关闭的标签,右键打开已关闭标签列表,那么改为(context: "_child",)
                               //如果想改成菜单形式的,那么改为(type: "menu-button",)
            uCTBtn.setAttribute('command', 'History:UndoCloseTab');
  
            uCTBtn.appendChild($C('menupopup', {
                oncommand: 'event.stopPropagation();',
                onpopupshowing: 'this.parentNode.populateUndoSubmenu();',
                context: '',
                tooltip: 'bhTooltip',
                popupsinherittooltip: 'true'
            }));
            uCTBtn._getClosedTabCount = HistoryMenu.prototype._getClosedTabCount;
            uCTBtn.populateUndoSubmenu = eval('(' + HistoryMenu.prototype.populateUndoSubmenu.toString().replace(/\.undoTabMenu/g, '') + ')');
        }
    });
  
  
    document.insertBefore(document.createProcessingInstruction(
        'xml-stylesheet', 'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent('\
            #undoclosetab-button menuitem {max-width: 240px;}\
            #undoclosetab-button .toolbarbutton-icon {list-style-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABuUlEQVRIib2VL08DQRDFKxANqahErijJte/N5pI2oQlNuA+AqEBUkHAJAkMIAhJERYNBICr4ABUIFKlEIBA4DAJRgUBUIJpgKioqitkry8H9CxcmmeQutzu/eTO5mULhP4xkA0Ar6ruIOCR3SZ4A6JrnRhaAR3JqQ5RSRQDHJMckFxE+JtlzXbccCwDQMRemAFpaa5J8jQkc9ncRaccBfOvw1HjwPhORvjnTAFAB0BGRfkjdXEQOo2rs/5YZgIGIbEUlJiKOAc3MnQ8Ae0kKlvUFsBZb2y9Qm+Tc3Jv86AnJo4ja3lar1fU0EJKXlvLz8MdeTAOHnuetJAFc1y1bPZlkASwAXKVU0bPuuN/ojuOoOE+jAsCOBfDTJJXJarXahqX8NHeA+UEDBd3cASJyYCnYzx0AYBAAtNbNvINvknwxgKd6vb6aK4DkfZB95EyysimJyBmAUprgZkcEwe+SDq8FUgG8kfSizppF9Gg1dpI4vwBUSI7sMUzy2YzsjvELkkNrwAVjfjuN4mCu3GRYOCOtNVMFD6lpkbwOLaDlIiL5AMBPM0ZiTSlVNPX2SHpa66ZSqvinoHnZJ3jLDwknYoRNAAAAAElFTkSuQmCC")}\
    ') + '"'), document.documentElement);
                
    function $C(name, attr) {
        var el = document.createElement(name);
        if (attr) Object.keys(attr).forEach(function(n) { return el.setAttribute(n, attr[n]);});
        return el;
    }
})();
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
7楼#
发布于:2019-05-25 14:36
333ywb:这个可以用,我的67版本正常使用
// ==UserScript==
// @Name                 UndoCloseTabBtn.uc.js
// @namespace         UndoCloseTab@gma...
回到原帖
我所反馈的是你的一模一样的,用是可以正常用,只运行一个窗口的时候是没有问题,但是当第二次运行程序,有了第二个窗口后,撤销图标就显示不出来了。
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
8楼#
发布于:2019-05-25 15:06
kidzgy:我所反馈的是你的一模一样的,用是可以正常用,只运行一个窗口的时候是没有问题,但是当第二次运行程序,有了第二个窗口后,撤销图标就显示不出来了。回到原帖
我都是在一个程序中用,没有多开用过
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
9楼#
发布于:2019-05-25 15:23
333ywb:我都是在一个程序中用,没有多开用过回到原帖
你试试运行两次FIREFOX.EXE
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
10楼#
发布于:2019-05-25 15:24
kidzgy:你试试运行两次FIREFOX.EXE回到原帖
我这里同一个版本只能开一个,开不了两个。
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
11楼#
发布于:2019-05-25 18:12
333ywb:我这里同一个版本只能开一个,开不了两个。回到原帖
不会,67可以开两个了,除非你安装了合并窗口的扩展
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
12楼#
发布于:2019-05-25 18:26
kidzgy:不会,67可以开两个了,除非你安装了合并窗口的扩展回到原帖
我是绿色便携版本,不能同一版本开两个,也懒的折腾同一版本开两个。所以装了68和69
333ywb
小狐狸
小狐狸
  • UID27284
  • 注册日期2008-12-03
  • 最后登录2019-05-26
  • 发帖数78
  • 经验82枚
  • 威望0点
  • 贡献值78点
  • 好评度0点
  • 社区居民
  • 忠实会员
13楼#
发布于:2019-05-25 18:27
kidzgy:不会,67可以开两个了,除非你安装了合并窗口的扩展回到原帖
我是绿色便携版本,不能同一版本开两个,也懒的折腾同一版本开两个。所以装了68和69
kidzgy
火狐狸
火狐狸
  • UID35190
  • 注册日期2011-02-03
  • 最后登录2019-05-26
  • 发帖数109
  • 经验48枚
  • 威望0点
  • 贡献值22点
  • 好评度2点
14楼#
发布于:2019-05-25 19:08
333ywb:我是绿色便携版本,不能同一版本开两个,也懒的折腾同一版本开两个。所以装了68和69回到原帖
哦哦明白了。我的便携版本跟你的便携方式不一样。
游客

返回顶部