Button für kürzlich geschlossene Tabs

Schrauberecke: Hier geht es um optische und funktionelle Veränderungen (ohne Themes oder Personas) von Firefox oder von Webseiten per CSS-Codes oder JavaScript.
EffPeh
Senior-Mitglied
Beiträge: 1501
Registriert: Mi, 04. Okt 2017 10:22

Re: Button für kürzlich geschlossene Tabs

#16

Beitrag von EffPeh » So, 26. Nov 2017 12:24

Stimmt, mein Fehler. Sorry. :)
Hatte es kurz eingebunden, aber nur auf der "Anpassen"-Seite als Button gesehen.
Also ist es praktisch eine Kombi aus #6 und #2. Grundsätzlich ja nicht schlecht.
Mein Wissen reicht da leider auch noch nicht, glaube ich. Mir sind noch viele Dinge unklar.
Ich finde die MDN-Doku auch unheimlich mühsam. Vieles, was da beschrieben wird, funktioniert so dann gar nicht, wenn ich es ausprobiere. Oder es fehlen andere Voraussetzungen, damit es so funktioniert.
Windows 10 | FF 61.0 (64-Bit) / FF 60.0 (64-Bit)

Benutzeravatar
edvoldi
Senior-Mitglied
Beiträge: 1871
Registriert: Mo, 18. Aug 2008 13:40

Re: Button für kürzlich geschlossene Tabs

#17

Beitrag von edvoldi » So, 26. Nov 2017 12:43

2002Andreas hat geschrieben:
So, 26. Nov 2017 10:47
Mein Script aus Beitrag Nr. 2 funktioniert hier zu 100% perfekt :!:
Hallo Andreas,
ich habe auch das selbe Problem wie im Beitrag #8 beschrieben wird.
Kann ein anderer Script das Problem sein?
Wie hast Du den die Chronik ausgeblendet ?
Das dürfte wie ich es sehen das Problem sein.
Gruß EDV Oldi
WIN10 pro & WIN10 Home Version 1803 (Build17134.191)
Firefox 61.0.2 (64-Bit)
Thunderbird 60.0 (64-Bit) / Lightning 6.2
Meine Erweiterungen

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 12044
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: Button für kürzlich geschlossene Tabs

#18

Beitrag von Endor » So, 26. Nov 2017 12:52

Betrifft Script aus Beitrag 2, bitte mal diese Version testen,
der Autor hat sie erst vor ein zwei Tagen aktualisiert:

Code: Alles auswählen

// ==UserScript==
// @name           UndoListInTabmenuToo
// @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
// @description    UndoListInTabmenuToo.uc.js
// @include        main
// @compatibility  Firefox 4.0 - 59
// @author         Alice0775
// @version        2017/11/18 nsIPrefBranch to nsIPrefBranch
// @version        2010/09/18 00:00 4.0b7pre
// @version        2009/02/03 13:00 ツールチップにタブ内履歴を表示するようにした
// @Note           タブやコンテキストメニューにもUndoClose Tab Listを追加するもの
// @OriginalCode   browser.jsからpopulateUndoSubmenuを拝借し, ごにょごにょした
// @version        2010/03/26 13:00  Minefield/3.7a4pre Bug 554991 -  allow tab context menu to be modified by normal XUL overlays
// @version        2010/03/15 00:00  Minefield/3.7a4pre Bug 347930 -  Tab strip should be a toolbar instead
// @version        2009/09/09 15:00 中クリック処理
// ==/UserScript==
// @version        2009/09/03 22:00 Firegox3.7a1preで動かなくなっていたのを修正(Bug 489925. getElementById should not return anonymous nodes)
// @version        2009/08/22 00:00 Firegox3.6 stringbandleの変更による
// @version        2009/04/24 00:00 #394759 [Firefox:Session Restore]-Add undo close window feature
// @version        2008/10/12 18:00 Fx3.0.4pre中クリックしたときメニューポップアップが閉じないおよびその他fix
// @version        2007/10/05 10:00

var UndoListInTabmenu = {
// -- config --
  TABCONTEXTMENU : true ,  //タブコンテキストメニューに              追加する:[true], しない: false
  CONTEXTMENU    : true,  //コンテンツアリアコンテキストメニューに  追加する: true , しない:[false]
// -- config end--
  ss: null,

  get tabContext() {
    return document.getAnonymousElementByAttribute(
                        gBrowser, "anonid", "tabContextMenu")||
           gBrowser.tabContainer.contextMenu;
;
  },

  init: function(){

    if (this.TABCONTEXTMENU){
      //タブコンテキスト
      var tabContext = this.tabContext;
      this.makePopup(tabContext, null, "tabContextUndoList");
    }
    if (this.CONTEXTMENU){
      //コンテンツエリアコンテキスト
      var contextMenu = document.getElementById("contentAreaContextMenu");
      var refItem = document.getElementById("context-sep-stop");
      this.makePopup(contextMenu, refItem, "ContextUndoList");
    }
    // get closed-tabs from nsSessionStore
    this._ss = Cc["@mozilla.org/browser/sessionstore;1"].
               getService(Ci.nsISessionStore);

  },

  makePopup: function(popup, refItem, id){
    var menu;
    //label
    const locale = Components.classes["@mozilla.org/preferences-service;1"]
                   .getService(Components.interfaces.nsIPrefBranch).getCharPref("general.useragent.locale");
    if (this.getVer() > 3.0) {
      // "Recently Closed Windows"
      menu = document.createElement("menu");
      menu.setAttribute("id", "historyUndoWindowMenu3");
      menu.setAttribute("label", "K\u00FCrzlich geschlossene Fenster");
      menu.setAttribute("accesskey", "F");
      menu.setAttribute("disabled", "true");
      popup.insertBefore(menu, refItem);

      this.historyUndoWindowPopup3 = menu = menu.appendChild(document.createElement("menupopup"));
      menu.setAttribute("id", "historyUndoWindowPopup3");
      menu.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoWindowSubmenu();");
    }

    //UndoClose Tab List  最近閉じたタブ
    const LABELTEXT = locale.indexOf("ja") == -1?"K\u00FCrzlich geschlossene Tabs":"\u6700\u8fd1\u9589\u3058\u305f\u30bf\u30d6";    //create menu
    menu = document.createElement("menu");
    menu.setAttribute("label", LABELTEXT);
    menu.setAttribute("accesskey", "T");
    if (id)
      menu.setAttribute("id", id);
    //menu.setAttribute("disabled", true);
    var menupopup = document.createElement("menupopup");
    if (this.getVer()<3) {
      menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu(this);");
    } else if (this.getVer()<3.6) {
      menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu3(this);");
    } else {
      menupopup.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoSubmenu36(this);");
    }
    menu.appendChild(menupopup);
    popup.insertBefore(menu, refItem);

    //add event listener
    popup.addEventListener('popupshowing',function(event) {
      if (UndoListInTabmenu.getVer() > 3.0)
        UndoListInTabmenu.toggleRecentlyClosedWindows();
      // no restorable tabs, so make sure menu is disabled, and return
      if (UndoListInTabmenu._ss.getClosedTabCount(window) == 0) {
        menu.setAttribute("disabled", true);
        //menu.setAttribute("hidden", true);
        return;
      }
        menu.removeAttribute("disabled");
      //menu.setAttribute("hidden", false);
    },false);
  },

  /**
   * Populate when the history menu is opened  (Fx2)
   */
  populateUndoSubmenu: function(undoPopup) {

    // remove existing menu items
    while (undoPopup.hasChildNodes())
      undoPopup.removeChild(undoPopup.firstChild);

    // populate menu
    var undoItems = eval("(" + UndoListInTabmenu._ss.getClosedTabData(window) + ")");
    for (var i = 0; i < undoItems.length; i++) {
        var m = undoPopup.appendChild(document.createElement("menuitem"));
      m.setAttribute("label", undoItems[i].title);
      m.setAttribute("value", i);
      m.setAttribute("oncommand", "undoCloseTab(" + i + ");");
      m.setAttribute("onclick", "UndoListInTabmenu._undoCloseMiddleClick(event);");
    }

    // "open in tabs"
    var bundleService = Cc["@mozilla.org/intl/stringbundle;1"].
                        getService(Ci.nsIStringBundleService);
    var stringBundle = bundleService.createBundle("chrome://browser/locale/bookmarks/bookmarks.properties");
    undoPopup.appendChild(document.createElement("menuseparator"));
    m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", stringBundle.GetStringFromName("cmd_bm_openfolder"));
    m.setAttribute("accesskey", stringBundle.GetStringFromName("cmd_bm_openfolder_accesskey"));
    m.addEventListener("command", function() {
      for (var i = 0; i < undoItems.length; i++)
        undoCloseTab();
    }, false);
  },

  /**
    * Re-open a closed tab and put it to the end of the tab strip.
    * Used for a middle click.
    * @param aEvent
    *        The event when the user clicks the menu item
    */
  _undoCloseMiddleClick: function PHM__undoCloseMiddleClick(aEvent) {
    if (aEvent.button != 1)
      return;

    undoCloseTab(aEvent.originalTarget.value);
    gBrowser.moveTabToEnd();
    if (!aEvent.ctrlKey)
      aEvent.originalTarget.parentNode.parentNode.parentNode.hidePopup();
  },

  /**
   * Populate when the history menu is opened (Fx3)
   */
  populateUndoSubmenu3: function(undoPopup) {

    // remove existing menu items
    while (undoPopup.hasChildNodes())
      undoPopup.removeChild(undoPopup.firstChild);

    // "Open All in Tabs"
    var strings = gNavigatorBundle;
    m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", strings.getString("menuOpenAllInTabs.label"));
    m.setAttribute("accesskey", strings.getString("menuOpenAllInTabs.accesskey"));
    m.addEventListener("command", function() {
      for (var i = 0; i < undoItems.length; i++)
        undoCloseTab();
    }, false);

    undoPopup.appendChild(document.createElement("menuseparator"));

    // populate menu
    var undoItems = eval("(" + UndoListInTabmenu._ss.getClosedTabData(window) + ")");
    for (var i = 0; i < undoItems.length; i++) {
      var entries = undoItems[i].state.entries;
      var tooltiptext = "";
      for (var j = entries.length - 1; j > -1; j--){
        if (j != entries.length - 1)
          tooltiptext += "\n";
        tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
      }
      var m = document.createElement("menuitem");
      m.setAttribute("tooltiptext", tooltiptext);
      m.setAttribute("label", undoItems[i].title);
      if (undoItems[i].image)
        m.setAttribute("image", undoItems[i].image);
      m.setAttribute("class", "menuitem-iconic bookmark-item");
      m.setAttribute("value", i);
      m.setAttribute("oncommand", "undoCloseTab(" + i + ");");
      m.setAttribute("onclick", "UndoListInTabmenu._undoCloseMiddleClick(event);");
      if (i == 0)
        m.setAttribute("key", "key_undoCloseTab");
      undoPopup.appendChild(m);
    }

    // "Clear undo close tb list"
    undoPopup.appendChild(document.createElement("menuseparator"));

    m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", "Liste der letzten Tabs l\u00F6schen");
    m.setAttribute("accesskey", "l");
    m.addEventListener("command", function() {
      var max_undo = UndoListInTabmenu.getPref("browser.sessionstore.max_tabs_undo", "int", 10);
      UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", 0);
      UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", max_undo);
      if (max_undo != UndoListInTabmenu.getPref("browser.sessionstore.max_tabs_undo", "int", 10))
        UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", max_undo);
    }, false);
  },

  /**
   * Populate when the history menu is opened (Fx3.6)
   */
  populateUndoSubmenu36: function(undoPopup) {

    // remove existing menu items
    while (undoPopup.hasChildNodes())
      undoPopup.removeChild(undoPopup.firstChild);

    // "Open All in Tabs"
    var strings = gNavigatorBundle;
    m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", strings.getString("menuRestoreAllTabs.label"));
    //m.setAttribute("class", "menuitem-iconic bookmark-item");
    m.setAttribute("accesskey", "R" /*strings.getString("menuRestoreAllTabs.accesskey")*/);
    m.addEventListener("command", function() {
      for (var i = 0; i < undoItems.length; i++)
        undoCloseTab();
    }, false);

    undoPopup.appendChild(document.createElement("menuseparator"));

    // populate menu
    var undoItems = eval("(" + UndoListInTabmenu._ss.getClosedTabData(window) + ")");
    for (var i = 0; i < undoItems.length; i++) {
      var entries = undoItems[i].state.entries;
      var tooltiptext = "";
      for (var j = entries.length - 1; j > -1; j--){
        if (j != entries.length - 1)
          tooltiptext += "\n";
        tooltiptext += parseInt(j + 1, 10) + ". " + entries[j].title;
      }
      var m = document.createElement("menuitem");
      m.setAttribute("tooltiptext", tooltiptext);
      m.setAttribute("label", undoItems[i].title);
      if (undoItems[i].image)
        m.setAttribute("image", undoItems[i].image);
      m.setAttribute("class", "menuitem-iconic bookmark-item");
      m.setAttribute("value", i);
      m.setAttribute("oncommand", "undoCloseTab(" + i + ");");
      m.setAttribute("onclick", "UndoListInTabmenu._undoCloseMiddleClick(event);");
      if (i == 0)
        m.setAttribute("key", "key_undoCloseTab");
      undoPopup.appendChild(m);
    }

    // "Clear undo close tb list"
    undoPopup.appendChild(document.createElement("menuseparator"));

    m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", "Liste der letzten Tabs l\u00F6schen");
    m.setAttribute("class", "menuitem-iconic bookmark-item");
    m.setAttribute("accesskey", "l");
    m.addEventListener("command", function() {
      var max_undo = UndoListInTabmenu.getPref("browser.sessionstore.max_tabs_undo", "int", 10);
      UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", 0);
      UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", max_undo);
      if (max_undo != UndoListInTabmenu.getPref("browser.sessionstore.max_tabs_undo", "int", 10))
        UndoListInTabmenu.setPref("browser.sessionstore.max_tabs_undo", "int", max_undo);
    }, false);
  },

  toggleRecentlyClosedWindows: function PHM_toggleRecentlyClosedWindows() {
    // enable/disable the Recently Closed Windows sub menu
    let undoPopup = this.historyUndoWindowPopup3;
    // no restorable windows, so disable menu
    if (this._ss.getClosedWindowCount() == 0)
      this.historyUndoWindowPopup3.parentNode.setAttribute("disabled", true);
    else
      this.historyUndoWindowPopup3.parentNode.removeAttribute("disabled");
  },

  /**
   * Populate when the history menu is opened
   */
  populateUndoWindowSubmenu: function PHM_populateUndoWindowSubmenu() {
    let undoPopup = this.historyUndoWindowPopup3;
    let menuLabelString = gNavigatorBundle.getString("menuUndoCloseWindowLabel");
    let menuLabelStringSingleTab =
      gNavigatorBundle.getString("menuUndoCloseWindowSingleTabLabel");

    // remove existing menu items
    while (undoPopup.hasChildNodes())
      undoPopup.removeChild(undoPopup.firstChild);

    // no restorable windows, so make sure menu is disabled, and return
    if (this._ss.getClosedWindowCount() == 0) {
      undoPopup.parentNode.setAttribute("disabled", true);
      return;
    }
    // enable menu
    undoPopup.parentNode.removeAttribute("disabled");
    let undoItems = JSON.parse(this._ss.getClosedWindowData());
    // "Open All in Windows"
    let m = undoPopup.appendChild(document.createElement("menuitem"));
    m.setAttribute("label", gNavigatorBundle.getString("menuRestoreAllWindows.label"));
    //m.setAttribute("class", "menuitem-iconic bookmark-item");
    m.setAttribute("accesskey", "W"/*gNavigatorBundle.getString("menuRestoreAllWindows.accesskey")*/);
    m.setAttribute("oncommand",
      "for (var i = 0; i < " + undoItems.length + "; i++) UndoListInTabmenu.undoCloseWindow();");
    undoPopup.appendChild(document.createElement("menuseparator"));
    // populate menu
    for (let i = 0; i < undoItems.length; i++) {
      let undoItem = undoItems[i];
      let otherTabsCount = undoItem.tabs.length - 1;
      let label = (otherTabsCount == 0) ? menuLabelStringSingleTab
                                        : PluralForm.get(otherTabsCount, menuLabelString);
      let menuLabel = label.replace("#1", undoItem.title)
                           .replace("#2", otherTabsCount);
      let m = document.createElement("menuitem");
      m.setAttribute("label", menuLabel);
      let selectedTab = undoItem.tabs[undoItem.selected - 1];
      if (selectedTab.attributes.image) {
        let iconURL = selectedTab.attributes.image;
        // don't initiate a connection just to fetch a favicon (see bug 467828)
        if (/^https?:/.test(iconURL))
          iconURL = "moz-anno:favicon:" + iconURL;
        m.setAttribute("image", iconURL);
      }
      m.setAttribute("class", "menuitem-iconic bookmark-item");
      m.setAttribute("oncommand", "UndoListInTabmenu.undoCloseWindow(" + i + ");");
      if (i == 0)
        m.setAttribute("key", "key_undoCloseWindow");
      undoPopup.appendChild(m);
    }
  },


  /**
   * Re-open a closed window.
   * @param aIndex
   *        The index of the window (via nsSessionStore.getClosedWindowData)
   * @returns a reference to the reopened window.
   */
  undoCloseWindow: function (aIndex) {
    let ss = Cc["@mozilla.org/browser/sessionstore;1"].
             getService(Ci.nsISessionStore);
    let window = null;
    if (ss.getClosedWindowCount() > (aIndex || 0))
      window = ss.undoCloseWindow(aIndex || 0);

    return window;
  },

  getPref: function(aPrefString, aPrefType, aDefault){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
                  .getService(Components.interfaces.nsIPrefBranch);
    try{
      switch (aPrefType){
        case 'complex':
          return xpPref.getComplexValue(aPrefString, Components.interfaces.nsILocalFile); break;
        case 'str':
          return xpPref.getCharPref(aPrefString).toString(); break;
        case 'int':
          return xpPref.getIntPref(aPrefString); break;
        case 'bool':
        default:
          return xpPref.getBoolPref(aPrefString); break;
      }
    }catch(e){
    }
    return aDefault;
  },

  setPref: function(aPrefString, aPrefType, aValue){
    var xpPref = Components.classes['@mozilla.org/preferences-service;1']
                  .getService(Components.interfaces.nsIPrefBranch);
    try{
      switch (aPrefType){
        case 'complex':
          return xpPref.setComplexValue(aPrefString, Components.interfaces.nsILocalFile, aValue); break;
        case 'str':
          return xpPref.setCharPref(aPrefString, aValue); break;
        case 'int':
          aValue = parseInt(aValue);
          return xpPref.setIntPref(aPrefString, aValue);  break;
        case 'bool':
        default:
          return xpPref.setBoolPref(aPrefString, aValue); break;
      }
    }catch(e){
    }
    return null;
  },

  //Fxのバージョンを得る
    //Fxのバージョン
  getVer: function(){
    const Cc = Components.classes;
    const Ci = Components.interfaces;
    var info = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
    var ver = parseInt(info.version.substr(0,3) * 10,10) / 10;
    return ver;
  }
};

if(!('TM_init' in window)) UndoListInTabmenu.init();
Wenn es passt geht sie ab nach Github.
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0.2
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/Firefox/62.0b18
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/Firefox/63.0a1

OS: Windows 7 H. P. 64 Bit Versions Info Stand 11.07.2018
Kein Support per PN. Fragen bitte im Forum stellen!

Benutzeravatar
edvoldi
Senior-Mitglied
Beiträge: 1871
Registriert: Mo, 18. Aug 2008 13:40

Re: Button für kürzlich geschlossene Tabs

#19

Beitrag von edvoldi » So, 26. Nov 2017 12:55

Endor hat geschrieben:
So, 26. Nov 2017 12:52
Betrifft Script aus Beitrag 2, bitte mal diese Version testen,
der Autor hat sie erst vor ein zwei Tagen aktualisiert:

Wenn es passt geht sie ab nach Github.
Hallo Endor,
diese Version funktioniert bei mir.
Gruß
EDV Oldi
WIN10 pro & WIN10 Home Version 1803 (Build17134.191)
Firefox 61.0.2 (64-Bit)
Thunderbird 60.0 (64-Bit) / Lightning 6.2
Meine Erweiterungen

EffPeh
Senior-Mitglied
Beiträge: 1501
Registriert: Mi, 04. Okt 2017 10:22

Re: Button für kürzlich geschlossene Tabs

#20

Beitrag von EffPeh » So, 26. Nov 2017 20:02

So, ich habe mich heute mal an einer Kombi aus #2 und #6 versucht. Und siehe da, es funktioniert (FF57, FF58).
Sogar ohne eval(). :P
Bitte mal testen, wenn Zeit und Lust besteht. :wink:

Code: Alles auswählen

(function() {
/** Button Start **/
try {
	CustomizableUI.createWidget({
		id: "uc-undo-close-button",
		defaultArea: CustomizableUI.AREA_NAVBAR,
		removable: true,
		label: "Tabs herstellen",
		tooltiptext: "Zuletzt geschlossene Tabs wieder herstellen",
		onCreated: function(aNode) {
			aNode.style.listStyleImage = 'url(\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M15 11h-1V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v6H1a1 1 0 0 0 0 2h14a1 1 0 1 0 0-2z"></path></svg>\')';
			 
			aNode.setAttribute( 'type' , 'menu-button' );
			aNode.setAttribute( 'command' , 'History:UndoCloseTab' );
			
			var menupopup = document.createElement('menupopup');
			menupopup.id = 'CTB-MP';
			menupopup.setAttribute( 'oncommand' , 'event.stopPropagation();' );
			menupopup.setAttribute( 'onpopupshowing' , 'parentNode.populateUndoSubmenu();' );
			menupopup.setAttribute( 'tooltip' , 'bhTooltip' );
			menupopup.setAttribute( 'popupsinherittooltip' , 'true' );
			menupopup.setAttribute( 'context' , '' );
			
			aNode.append( menupopup );
			
			menupopup.addEventListener('popupshowing', function(event) {
				event.stopPropagation();
				if (event.target != this) { return; }

				var sessionStore = Cc['@mozilla.org/browser/sessionstore;1'].getService(Ci.nsISessionStore);
				//var sessionItems = eval('(' + sessionStore.getClosedTabData(window) + ')');
				var sessionItems = JSON.parse( sessionStore.getClosedTabData(window) );
				
				for (var i = 0; i < sessionItems.length; i++) {
					var item = menupopup.appendChild( document.createElement('menuitem') );
					item.setAttribute( 'label' , sessionItems[i].title );
					item.setAttribute( 'image' , sessionItems[i].image );
					item.setAttribute( 'value' , i );
					item.setAttribute( 'oncommand' , 'undoCloseTab(' + i + ');' );
					item.setAttribute('class', 'menuitem-iconic bookmark-item');
				}
			});
			
			menupopup.addEventListener('popuphiding', function(event) {
				if (event.target != this) { return; }
				while (menupopup.firstChild) {
					menupopup.removeChild(menupopup.firstChild);
				}
			});
			return aNode;
		}
	});
} catch (e) {
	Components.utils.reportError(e);
};
/** Button Ende **/
})();

Windows 10 | FF 61.0 (64-Bit) / FF 60.0 (64-Bit)

SuperDAU#0815
Junior-Mitglied
Beiträge: 15
Registriert: Sa, 18. Nov 2017 23:42

Re: Button für kürzlich geschlossene Tabs

#21

Beitrag von SuperDAU#0815 » So, 26. Nov 2017 23:52

Hallo,

effpehs script aus #20 funktioniert bei mir (in Form eines Buttons + Aufklappliste in der Symbolleiste).

Aber Scheewittchen hinter den sieben Bergen... 8)

bzw. Endors aus #18 ist tausendmal schöner ... :oops:

Super. Vielen Dank.

Die Handhabung ist wie gewohnt und man spart sich dauerhaft sichtbare Buttons etc. im Blickfeld.

Das hier stand noch gar nicht au meiner todo-Liste, um dem ff57 wieder benutzbar zu machen, bin nur bei der Forumsrecherche allgemein darauf gestoßen. Eigentlich war ich gerade beim Entschlacken des Kontextmenüs und der Adressleiste etc. Habe ein paar Grundlagen den Stickys etc. entnommen... wobei ich bisher nicht weiß, wie ich script, code etc. von einander unterscheiden kann, um es an die richtige Stelle zu bringen. Das hier unter #18 ist ein script - richtig? Und das was man in die userChrome.css einfügt - wie nennt sich das - code?

Wäre nett, wenn da jemand noch ein paar Hinweise geben könnte.

Dank und Gruß

Supi

Benutzeravatar
Speravir
Senior-Mitglied
Beiträge: 789
Registriert: Do, 15. Dez 2005 1:33
Wohnort: Potsdam

Re: Button für kürzlich geschlossene Tabs

#22

Beitrag von Speravir Themen-Starter » Mo, 27. Nov 2017 0:36

2002Andreas hat geschrieben:
So, 26. Nov 2017 10:47
Leute denkt bitte dran, ihr redet von 2 verschiedenen Scripten hier.

Mein Script aus Beitrag Nr. 2 funktioniert hier zu 100% perfekt :!:
In meiner Antwort auf dich bezog ich mich genau auf das von dir gepostete Skript.
Ich habe oben in der Menüleiste das Menü Chronik ausgeblendet
Diese Information hast Du aber oben auch ausgeblendet …

Update: Aaa, ich sehe, der EDV-Junior hat das auch schon angemerkt.
Endor hat geschrieben:
So, 26. Nov 2017 12:52
Betrifft Script aus Beitrag 2, bitte mal diese Version testen,
Jepp, funktioniert und, wenn der Button nicht mehr funktioniert, auch erstmal ausreichend.
Steffen "Speravir"
---
Spiro, ergo sum.
Avatar: Vorlage Fox Head and Tail Tribal by Majykal-Melodi on DeviantArt, bearbeitet (Lizenz: CC by-sa 3.0)

SuperDAU#0815
Junior-Mitglied
Beiträge: 15
Registriert: Sa, 18. Nov 2017 23:42

Re: Button für kürzlich geschlossene Tabs

#23

Beitrag von SuperDAU#0815 » Mo, 27. Nov 2017 19:03

Hallo!

Nach weiterer Verwendung ist etwas Ernüchterung eingetreten: Leider sind die zusätzlichen Einträge im Tab-Kontext-Menü jetzt auch überall bei jeder anderen Kontextmenüverwendung zu sehen.

Daher ist für mich die Lösung aus Post #18 leider nicht tauglich, da ich um cleane Optik und reduzierte Menüs etc. bemüht bin.

Bleibt die Frage, die 2002Andreas vielleicht bitte klären könnte: Ob das bei ihm auch so ist bzw. wie seine Lösung mit dem gelöschten Menüleisten-Eintrag etc. zu bewerkstelligen ist.

Dank und Gruß

Supi

Benutzeravatar
2002Andreas
Moderator
Beiträge: 38006
Registriert: Fr, 04. Jul 2008 19:25
Wohnort: Niedersachsen

Re: Button für kürzlich geschlossene Tabs

#24

Beitrag von 2002Andreas » Mo, 27. Nov 2017 19:08

Bei mir sieht das so aus mit dem Script aus Beitrag Nr. 2 bei einem Rechtsklick auf einen beliebigen Tab.
Screenshot (194).png
Und das Menü "Chronik" aus der Menüleiste habe ich dazu damit ausgeblendet:

Code: Alles auswählen

#history-menu{
	visibility:collapse!important}
Mit freundlichem Gruß
Andreas
Mein System    Meine Add-ons

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 12044
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: Button für kürzlich geschlossene Tabs

#25

Beitrag von Endor » Mo, 27. Nov 2017 19:20

Mann kann doch im Script sogar einstellen wo es angezeigt werden soll.
Nur im Tabkontextmenu oder nur im Rechtsklick Kontextmenü oder bei beiden.
In Zeile 25 und 26 wo es nicht erwünscht ist auf false stellen:

Code: Alles auswählen

  TABCONTEXTMENU : true ,  //タブコンテキストメニューに              追加する:[true], しない: false
  CONTEXTMENU    : true,  //コンテンツアリアコンテキストメニューに  追加する: true , しない:[false]
Werde d<s im Script noch auf Deutsch übersetzen zum besseren Verständnis.
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0.2
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/Firefox/62.0b18
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/Firefox/63.0a1

OS: Windows 7 H. P. 64 Bit Versions Info Stand 11.07.2018
Kein Support per PN. Fragen bitte im Forum stellen!

SuperDAU#0815
Junior-Mitglied
Beiträge: 15
Registriert: Sa, 18. Nov 2017 23:42

Re: Button für kürzlich geschlossene Tabs

#26

Beitrag von SuperDAU#0815 » Mo, 27. Nov 2017 19:58

Ja, danke. Das sieht gut aus.

Ich hab meinen Nick ja nich aus Spaß gewählt :mrgreen:

Daher:

Klar hab ich mal in das Script geguckt, ob man da was anpassen kann, aber das sind ohne Ahnung nur böhmische Dörfer...

Also noch die Angstfrage:

Nur das "true" nach "contextmenu" ändern oder auch das nach den chinesisch anmutenden Zeichen? Das scheint wie Code für nen Schalter - ist das so was in der Art???

Andreas' Lösung hab ich leider nicht hin bekommen, weil ich noch kein Plan hab, wie man die Einträge in der userChrome.css zusammenfügt... Wenns überhaupt dort hingehört (also die Ergänzung aus #24). Eigenartigerweise hat es kurz funktioniert, wollte schon die Erfolgsmeldung posten, aber dann poppte wieder alles mit auf (wie in #8). Ich hatte die Ergänzung mit einer Leerzeile dazwischen an mein restliches Gedöns in der userChrome.css angehängt... nach dem die Trennung mit Komma gar nix brachte... Da muss ich wohl irgendwo noch Grundlagen pauken, mannmannmann

Also noch mal vielen Dank für Eure Mühe

Grüße

Supi

Benutzeravatar
2002Andreas
Moderator
Beiträge: 38006
Registriert: Fr, 04. Jul 2008 19:25
Wohnort: Niedersachsen

Re: Button für kürzlich geschlossene Tabs

#27

Beitrag von 2002Andreas » Mo, 27. Nov 2017 20:04

SuperDAU#0815 hat geschrieben:
Mo, 27. Nov 2017 19:58
Nur das "true" nach "contextmenu" ändern
Ja.
SuperDAU#0815 hat geschrieben:
Mo, 27. Nov 2017 19:58
oder auch das nach den chinesisch anmutenden Zeichen?
Nein.
Mit freundlichem Gruß
Andreas
Mein System    Meine Add-ons

SuperDAU#0815
Junior-Mitglied
Beiträge: 15
Registriert: Sa, 18. Nov 2017 23:42

Re: Button für kürzlich geschlossene Tabs

#28

Beitrag von SuperDAU#0815 » Mo, 27. Nov 2017 20:12

Danke!

Benutzeravatar
2002Andreas
Moderator
Beiträge: 38006
Registriert: Fr, 04. Jul 2008 19:25
Wohnort: Niedersachsen

Re: Button für kürzlich geschlossene Tabs

#29

Beitrag von 2002Andreas » Mo, 27. Nov 2017 20:13

SuperDAU#0815 hat geschrieben:
Mo, 27. Nov 2017 19:58
Wenns überhaupt dort hingehört (also die Ergänzung aus #24).
Ist eine Änderung der Optik vom Firefox und gehört darum in die userChrome.css Datei.

Das andere ist ein Script und wird im chrome Ordner als Datei mit der Endung .uc.js gespeichert.
Mit freundlichem Gruß
Andreas
Mein System    Meine Add-ons

Benutzeravatar
Endor
Senior-Mitglied
Beiträge: 12044
Registriert: Fr, 20. Apr 2007 15:41
Wohnort: Irgendwo ganz weit im Süden und doch mitten in den Bergen
Kontaktdaten:

Re: Button für kürzlich geschlossene Tabs

#30

Beitrag von Endor » Mo, 27. Nov 2017 20:58

SuperDAU#0815 hat geschrieben:
Mo, 27. Nov 2017 19:58
nach den chinesisch anmutenden Zeichen? Das scheint wie Code für nen Schalter - ist das so was in der Art???....
Das ist eine Beschreibung des „Schalters“ in Japanischer Sprache.

In deutsch sieht es jetzt so aus:

Code: Alles auswählen

// -- config --
  TABCONTEXTMENU : true , //Im Tabkontextmenü: anzeigen: true, nicht anzeigen: false
  CONTEXTMENU    : true,  //Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false
// -- config end--
Mfg.
Endor
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0.2
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/Firefox/62.0b18
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/Firefox/63.0a1

OS: Windows 7 H. P. 64 Bit Versions Info Stand 11.07.2018
Kein Support per PN. Fragen bitte im Forum stellen!

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste