1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Endor

Beiträge von Endor

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • Endor
    • 15. September 2019 um 14:09

    Hallo zusammen.

    So habe eben das ganze Script aktualisiert.

    Nun sollte alles wieder funktionieren in Firefox 69.

    https://github.com/Endor8/userChr…oxbuttons.uc.js

    Mfg.
    Endor

  • Tableiste nach unten verschoben, seit FF 69.0 wird das Suchfeld für Seite durchsuchen nicht mehr angezeigt

    • Endor
    • 14. September 2019 um 16:56

    füge mal diese Zeile in deinen CSS Code ein und teste, Wert eventuell noch anpassen.

    damit wird die findbar weiter nach oben geschoben:

    CSS
    #panel-1-7 > vbox:nth-child(1) > findbar:nth-child(4){margin-bottom: 35px !important;}

    Mfg.
    Endor

  • Farbliche Anpassungen im Hauptmenü

    • Endor
    • 13. September 2019 um 17:23

    Nur zur Info.

    Habe jetzt alle auf browser.xhtml aktualisiert.

    Es sind bei ein paar Dateien auch noch ein paar Zeilen CSS dazu gekommen.
    :wink:

    Nochmals Danke an Boersenfeger für den Hinweis.

    :klasse:

    Mfg.
    Endor

  • Noch ein paar graue Lesezeichenordner!?

    • Endor
    • 13. September 2019 um 17:19

    Hallo .DeJaVu

    Alles klar. kein Problem. Hatte ich im übrigen schon so verstanden.

    Mfg.

    Endor

  • Noch ein paar graue Lesezeichenordner!?

    • Endor
    • 13. September 2019 um 08:14

    Hallo @teko und Kerian .

    Prima freut mich wenn es passt.

    War wie immer gern geschehen.

    .DeJaVu

    Danke für den Link. Für mich war es aber wichtig das selber zu schaffen.
    Ich greife diesbezüglich nur wenn ich es wirklich nicht selber hinbekomme auf Hilfe von
    anderen zu. Trotzdem nochmals danke für den Link.

    Mfg.
    Endor

  • Noch ein paar graue Lesezeichenordner!?

    • Endor
    • 12. September 2019 um 17:09

    Teste mal:

    CSS
    @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    treechildren::-moz-tree-image(container) {
    list-style-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII=')
    !important;}
    }

    Damit sind die Ordner da jetzt auch gelb.

    Mfg.

    Endor

  • Noch ein paar graue Lesezeichenordner!?

    • Endor
    • 12. September 2019 um 16:40

    Einen Teil habe ich glaube ich erwischt, wenn es mich aber nicht täuscht sind die Ordner bei Dir schon gelb.

    CSS
    @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    
    .folder-icon {
    list-style-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII=')
    !important;
    -moz-image-region: rect(0px 16px 16px 0px) !important; }
    }

    Aber die unteren kriege ich nicht hin. Die kriegt man in den
    Browser Werkzeugen einfach nicht zu fassen, jedenfalls ich. :/8|
    Vielleicht hat 2002Andreas ja eine Idee.

    Siehe nächsten Beitrag.

    Mfg.
    Endor

  • Noch ein paar graue Lesezeichenordner!?

    • Endor
    • 12. September 2019 um 14:39

    Hallo teko

    Ändere Zeile 3 wieder zurück nach xul und teste,

    Also: chrome://browser/content/places/places.xhtml

    nach: chrome://browser/content/places/places.xul

    und teste.

    Mfg.
    Endor

  • Firefox 69 Anpassungen fehlerhaft trotz about:config Änderung

    • Endor
    • 10. September 2019 um 14:45

    Achso, na dann ist alles klar....

    Mfg.
    Endor

  • Firefox 69 Anpassungen fehlerhaft trotz about:config Änderung

    • Endor
    • 10. September 2019 um 14:33

    Hallo GermanFreme82

    Teste mal dieses Script, es schiebt nur die Tableiste wieder
    unter die Lesezeichenleiste.

    Code
    (function() {
    var tabbar = document.getElementById('TabsToolbar');
    if (tabbar && !tabbar.collapsed) {
    tabbar.parentNode.parentNode.appendChild(tabbar);
    };
    })();

    Speichere es als Script: TableisteUnten.uc.js im chrome Ordner.

    Mfg.
    Endor

  • FF69 UndoListInTabmenuToo funktioniert nur eingeschränkt

    • Endor
    • 9. September 2019 um 21:18

    Nur um nochmals klar zustellen, die Liste mit den geschlossenen Fenstern

    wird hier nur im Rechtsklick Kontextmenü angezeigt. Im Tabkontextmenü

    wird nur der Eintrag angezeigt aber nicht die Liste, das funktioniert aber

    schon länger nicht mehr bei diesem Script. Kann aber leider nicht sagen wieso.

    Mfg.
    Endor

  • FF69 UndoListInTabmenuToo funktioniert nur eingeschränkt

    • Endor
    • 9. September 2019 um 19:42

    Also hier unter Firefox 69 werden auch geschlossene Fenster

    einwandfrei angezeigt. Vermute mal dir haut da irgendwas dazwischen,

    anderes Script, CSS Code usw.

    Mfg.

    Endor

  • "Anpassen" und "Vorherige Sitzung wiederherstellen"

    • Endor
    • 9. September 2019 um 08:16

    Wie immer gern geschehen.

    Freut mich wenn es funktioniert.

    Mfg.

    Endor

  • FF69 UndoListInTabmenuToo funktioniert nur eingeschränkt

    • Endor
    • 9. September 2019 um 08:07

    Bitte mal diese Version testen die ist ganz aktuell:

    Code
    // ==UserScript==
    // @name UndoListInTabmenuToo
    // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description UndoListInTabmenuToo.uc.js
    // @include main
    // @compatibility Firefox 69.0
    // @author Alice0775
    // @version 2019/06/30 10:00 Bug 1555060 Convert <tabs> to a custom element
    // @version 2019/06/24 23:00 wait for gBrowser initialized
    // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version 2018/05/10 60
    // @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 2018/05/09 15:00 61
    // ==/UserScript==
    // @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 中クリック処理
    // @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 , //Im Tabkontextmenü: anzeigen: true, nicht anzeigen: false
    CONTEXTMENU : true, //Im Hauptkontextmenü: anzeigen: true , nicht anzeigen: false
    // -- config end--
    ss: null,
    
    
    get tabContext() {
    return document.getElementById("tabContextMenu");
    },
    
    
    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
    try {
    this._ss = Cc["@mozilla.org/browser/sessionstore;1"].
    getService(Ci.nsISessionStore);
    } catch(x) {
    this._ss = SessionStore;
    }
    
    
    },
    
    
    makePopup: function(popup, refItem, id){
    var menu;
    //label
    const locale = "de";
    
    
    if (this.getVer() > 3.0) {
    // "Recently Closed Windows"
    menu = document.createXULElement("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.createXULElement("menupopup"));
    menu.setAttribute("id", "historyUndoWindowPopup3");
    menu.setAttribute("onpopupshowing", "UndoListInTabmenu.populateUndoWindowSubmenu();");
    }
    
    
    //UndoClose Tab List - Liste kürzlich geschosener Tabs
    const LABELTEXT = locale.indexOf("ja") == -1?"K\u00FCrzlich geschlossene Tabs":"\u6700\u8fd1\u9589\u3058\u305f\u30bf\u30d6"; //create menu
    menu = document.createXULElement("menu");
    menu.setAttribute("label", LABELTEXT);
    menu.setAttribute("accesskey", "T");
    if (id)
    menu.setAttribute("id", id);
    //menu.setAttribute("disabled", true);
    var menupopup = document.createXULElement("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.createXULElement("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.createXULElement("menuseparator"));
    m = undoPopup.appendChild(document.createXULElement("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.createXULElement("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.createXULElement("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.createXULElement("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.createXULElement("menuseparator"));
    
    
    m = undoPopup.appendChild(document.createXULElement("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.createXULElement("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.createXULElement("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.createXULElement("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.createXULElement("menuseparator"));
    
    
    m = undoPopup.appendChild(document.createXULElement("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);
    },
    
    
    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.createXULElement("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.createXULElement("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.createXULElement("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) {
    // get closed-tabs from nsSessionStore
    try {
    ss = Cc["@mozilla.org/browser/sessionstore;1"].
    getService(Ci.nsISessionStore);
    } catch(x) {
    ss = SessionStore;
    }
    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.nsIFile); 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.nsIFile, 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 Version ermitteln
    //FxVersion
    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;
    }
    };
    
    
    // We should only start the redirection if the browser window has finished
    // starting up. Otherwise, we should wait until the startup is done.
    if (gBrowserInit.delayedStartupFinished) {
    UndoListInTabmenu.init();
    } else {
    let delayedStartupFinished = (subject, topic) => {
    if (topic == "browser-delayed-startup-finished" &&
    subject == window) {
    Services.obs.removeObserver(delayedStartupFinished, topic);
    UndoListInTabmenu.init();
    }
    };
    Services.obs.addObserver(delayedStartupFinished,
    "browser-delayed-startup-finished");
    }
    Alles anzeigen

    Mfg.
    Endor

  • "Anpassen" und "Vorherige Sitzung wiederherstellen"

    • Endor
    • 8. September 2019 um 21:23

    milupo :oops:

    Hatte Dein Script gar nicht gesehen. Ist identisch mit meinem.

    Sorry.

    Mfg.
    Endor

  • "Anpassen" und "Vorherige Sitzung wiederherstellen"

    • Endor
    • 8. September 2019 um 21:19

    Also hier funktioniert es einwandfrei.

    Wegen Script Cache löschen:

    Bei geschlossenem Firefox im Profilordner den Inhalt des Ordners
    startupCache löschen.

    Mfg.
    Endor

  • "Anpassen" und "Vorherige Sitzung wiederherstellen"

    • Endor
    • 8. September 2019 um 21:14

    RestartFirefoxButtonM.uc.js bitte testen:

    Code
    // RestartFirefoxButtonM.uc.js
    // v. 0.3
    
    
    (function() {
    
    
    if (location != 'chrome://browser/content/browser.xhtml') return;
    
    
    try {
    CustomizableUI.createWidget({
    id: 'restart-button',
    type: 'custom',
    defaultArea: CustomizableUI.AREA_NAVBAR,
    onBuild: function(aDocument) {
    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
    var props = {
    id: 'restart-button',
    class: 'toolbarbutton-1 chromeclass-toolbar-additional',
    label: 'Neustart',
    tooltiptext: 'Neustart (mit Rechts- und Mittelklick wird userChrome.js-Cache geleert)',
    style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAEZ0FNQQAAsY58%2B1GTAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAN8SURBVHjaVJFNTBxlAIafb2Z29gd2l4VdYCkokAUt1AJplQRTrVqjUWMPPWHSCzb21IOn9qIHY2xMahoTTb00NmkUm5qAjdpUI61VaCxCpCVYixt%2ByvKzCwu7LDs7zMw3HmhM%2Bt6fJ0%2FyCp69wiOzZBCPcqSmIXg0HPHuC4R8nkLWyOXyYiIzfuVHzMIA%2BZsLtH18EApntUdhpzUSD5577nDLi%2FGWKjx%2BHVfR8HpFwNwsxTMzza%2BOXJ1%2B58Ev2sVEV%2ByEawXqxf8FllNWEQ9ePXzsqQOecIDU8jampSAVD76Al2BIIx4Dv2Nz7%2FYq%2B5%2BP8sNXE6WdAhdQlOM9rzUdaGiN8M9UjnKvQjzuA0UjV3AxDIcHywqRoEbXoVrKgyBtKXYEUvprmiN9oaoyvr9wl62NHJbtJeDzOo17YmprVzWOppLO2RRNwf1FSOzSUAXsCIR4QdP13UPfjhUde2mjuBXUjcXNEabOnJmq7Y4Nd7z1fu%2BJ%2FR2Jpgrm0jauAI8GlnSlBi4I0bO6sLBWHc9esxRdmjOZf5n%2B5CLWzCzOvsbKupBZ1xgmElUoC%2BgoKtRGQfNomoaND8P8XS%2Bby1olO7O6GHTl1DejGDOrNB%2BvpO7I%2Ba31%2FDP9Z28YUmqoqhCKcG2EYD6ZMUTojZ8WHmsqD%2BI6wnWFajugCkuuZaV%2FZS47wp99R7E3LbxPV6rtr7dV1pmyuBWs3hr7dZ380LC2tzseffvUHm86C1JC2A%2FrGcn509cn%2BPvTk9ibc1R06qL91Ms1CadF000ll9rVS2VykLzVr0lHOgtpuJ9yUFyXxqhKZjbH2nJRI9IZwyw2kXjvXV%2FIOWgaBcc2a%2BtjdVXR1J3iBDx8QUpQUJAuJJclseogxz441H5vrPO72cm0VSyVPJq27ZaHm8ST3Y0M9d9Kkr19A1A1x4VIObTGBfNrsJ5XmE9b6KqgvrOGhr1Vns2sgeNIkXiigvHf1liZuHWZYjINSEXRVLewZjN6bYmYbvN4rcDvVzFKLnOpErMLBpvbklClznyyyPDA6DjTX3wJWICr%2Bnb3ffjXSGpl5Nxnn88uh2ORUCBaHfVQU%2BsjVuGhKqJT5lFYShr8fGH4j42bH53EnJ4EtgEEPQOTzHx9mqXLl9AT9TS82RvreOmVcMTXVh4JhIr5kp3LFu6u3Lk%2ByMylQazU3ENYAvw3AFUTimFqj5i7AAAAAElFTkSuQmCC)',
    onclick: 'if (event.button == 1 || event.button == 2) { \
    event.preventDefault(); \
    Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime). \
    invalidateCachesOnRestart(); \
    }; \
    BrowserUtils.restartApplication();'
    };
    for (var p in props)
    toolbaritem.setAttribute(p, props[p]);
    return toolbaritem;
    }
    });
    } catch(e) { };
    
    
    })();
    Alles anzeigen

    Mfg.
    Endor

  • Speicherort von Dateien und Ordnern für den schnellen Zugriff über die zusätzliche Symbolleiste

    • Endor
    • 8. September 2019 um 20:53

    Bitte testen:

    Code
    // ==UserScript==
    // @name External-Aplication.uc.js
    // @namespace ithinc#mozine.cn
    // @description External Applications
    // @include main
    // @compatibility Firefox 3.5.x
    // @author ithinc
    // @version 20091212.0.0.1 Initial release
    // @version 20170911.0.0.2 Fix by aborix
    // ==/UserScript==
    //
    // Herkunft:
    // https://www.camp-firefox.de/forum/thema/126871-speicherort-von-dateien-und-ordnern-f%C3%BCr-den-schnellen-zugriff-%C3%BCber-die-zus%C3%A4tzlic/?pageNo=1
    
    
    /* :::: External Applications :::: */
    
    
    var gExternalApplications = {
    type: 'menu', //'menu' or 'button'
    insertafter: 'menubar-items',
    
    
    apps: [
    {name: 'EmEditor', path: 'C:\\Program Files (x86)\\EmEditor\\EmEditor.exe'},
    {name: 'Notepad++', path: 'D:\\___Stickware\\office\\NPP\\Notepad++Portable.exe'},
    {name: 'Calculator', path: 'C:\\WINDOWS\\system32\\calc.exe'},
    {name: 'Command Prompt', path: 'C:\\WINDOWS\\system32\\cmd.exe'},
    {name: 'separator'},
    {name: 'EDF-Reviews', path: 'D:\\05_E-Smoke\\0B_Foren\\EDF\\Reviews'},
    {name: 'EDF-Tabellen', path: 'D:\\05_E-Smoke\\0B_Foren\\EDF\\Tabellen'},
    {name: 'separator'},
    {name: 'Shops', path: 'D:\\05_E-Smoke\\08_Shops'},
    {name: 'separator'},
    {name: 'FF-Chrome', path: 'D:\\___Stickware\\comm\\FirefoxPortable\\Data\\profile\\chrome'},
    ],
    
    
    init: function() {
    for (var i=0; i<this.apps.length; i++) {
    if (!this.apps[i].path) continue;
    if (!this.apps[i].args) this.apps[i].args = [];
    
    
    this.apps[i].path = this.apps[i].path.replace(/\//g, '\\');
    
    
    var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('CurProcD', Ci.nsIFile).path;
    if (/^(\\)/.test(this.apps[i].path)) {
    this.apps[i].path = ffdir.substr(0,2) + this.apps[i].path;
    }
    else if (/^(\.)/.test(this.apps[i].path)) {
    this.apps[i].path = ffdir + '\\' + this.apps[i].path;
    }
    }
    
    
    if (this.type == 'menu') {
    var mainmenu = document.getElementById('main-menubar'); // das war das Original
    var menu = mainmenu.appendChild(document.createXULElement('menu'));
    menu.setAttribute('label', 'Start'); // Menu = "Start"
    menu.setAttribute('accesskey', 'a');
    
    
    var menupopup = menu.appendChild(document.createXULElement('menupopup'));
    for (var i=0; i<this.apps.length; i++) {
    menupopup.appendChild(this.createMenuitem(this.apps[i]));
    }
    }
    else {
    var menubarItems = document.getElementById(this.insertafter);
    var toolbaritem = menubarItems.parentNode.insertBefore(document.createXULElement('toolbaritem'), menubarItems.nextSibling);
    toolbaritem.id = 'ExtAppButtons';
    toolbaritem.setAttribute("class", "chromeclass-toolbar-additional");
    toolbaritem.setAttribute("orient", "horizontal");
    for (var i=0; i<this.apps.length; i++) {
    toolbaritem.appendChild(this.createButton(this.apps[i]));
    }
    }
    },
    
    
    exec: function(path, args) {
    for (var i=0; i<args.length; i++) {
    args[i] = args[i].replace(/%u/g, gBrowser.currentURI.spec);
    }
    
    
    var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
    file.initWithPath(path);
    if (!file.exists()) {
    throw 'File Not Found: ' + path;
    }
    
    
    if (!file.isExecutable() || args.length==0) {
    file.launch();
    }
    else {
    var process = Cc['@mozilla.org/process/util;1'].getService(Ci.nsIProcess);
    process.init(file);
    process.run(false, args, args.length);
    }
    },
    
    
    createButton: function(app) {
    if (app.name == 'separator')
    return document.createXULElement('toolbarseparator');
    
    
    var item = document.createXULElement('toolbarbutton');
    item.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional');
    item.setAttribute('label', app.name);
    item.setAttribute('image', 'moz-icon:file:///' + app.path + '?size=16');
    item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
    // item.setAttribute('tooltiptext', app.name);
    item.path = app.path;
    item.args = app.args;
    return item;
    },
    
    
    createMenuitem: function(app) {
    if (app.name == 'separator')
    return document.createXULElement('menuseparator');
    
    
    var item = document.createXULElement('menuitem');
    item.setAttribute('class', 'menuitem-iconic');
    item.setAttribute('label', app.name);
    item.setAttribute('image', 'moz-icon:file:///' + app.path + '?size=16');
    item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
    item.path = app.path;
    item.args = app.args;
    return item;
    }
    };
    gExternalApplications.init();
    Alles anzeigen

    Mfg.
    Endor

  • Download Scripts funktionieren nicht richtig bzw. gar nicht.

    • Endor
    • 8. September 2019 um 17:16

    Nur zur Info: es gibt eine neue Version vom Script

    und da werden wieder alle Downloads angezeigt:

    CSS
    // ==UserScript==
    // @name ucjsDownloadsStatusModoki.uc.js
    // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description Downloads Status Modoki
    // @include main
    // @compatibility Firefox 69+
    // @author Alice0775
    // @version 2019/09/08 19:30 fix scrollbox
    // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version 2018/10/27 12:00 fix for 64+
    // @version 2018/06/12 21:00 fix for private window mode
    // @version 2018/06/07 12:00 fix file name for history
    // @version 2018/02/10 12:00 try catch error when DO_NOT_DELETE_HISTORY = true
    // @version 2017/12/10 12:00 fix error when DO_NOT_DELETE_HISTORY = true
    // @version 2017/12/10 12:00 remove workaround Bug 1279329. Disable btn while clear list is doing, close button styling for 57.
    // @version 2016/06/10 12:00 modify style independent of font-family
    // @version 2016/06/10 07:00 modify style of close button, fix typo
    // @version 2016/06/10 00:00 Workaround Bug 1279329. adjust some padding
    // @version 2015/05/08 00:00 remove padding due to Bug 1160734
    // @version 2014/03/31 00:00 fix for browser.download.manager.showWhenStarting
    // @version 2013/12/22 13:00 chromehidden
    // @version 2013/12/19 17:10 rename REMEMBERHISTOTY to DO_NOT_DELETE_HISTORY
    // @version 2013/12/16 23:28 fixed initialize numDls
    // @version 2013/12/16 23:24 open only download added
    // @version 2013/12/16 23:10 open only download started
    // @version 2013/12/16 21:20 modify css Windows7 Aero
    // @version 2013/12/16 21:00 modify css
    // @version 2013/12/16 19:30 add autocheck false
    // @version 2013/12/16 18:31 fix pref name
    // @version 2013/12/16 18:30
    // @note
    // ==/UserScript==
    var ucjsDownloadsStatusModoki = {
    _summary: null,
    _list: null,
    
    
    get downloadsStatusModokiBar() {
    delete downloadsStatusModokiBar;
    return this.downloadsStatusModokiBar = document.getElementById("downloadsStatusModokiBar");
    },
    
    
    get toggleMenuitem() {
    delete toggleMenuitem;
    return this.toggleMenuitem = document.getElementById("toggle_downloadsStatusModokiBar");
    },
    
    
    init: function() {
    if (document.documentElement.getAttribute("chromehidden") !="" )
    return;
    
    
    XPCOMUtils.defineLazyModuleGetter(window, "Downloads",
    "resource://gre/modules/Downloads.jsm");
    
    
    var style = `
    @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
    #ucjsDownloadsStatusModoki {
    width: 100%;
    max-height: 100px;
    height: 39px;
    }
    `.replace(/\s+/g, " ");
    var sspi = document.createProcessingInstruction(
    'xml-stylesheet',
    'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
    );
    document.insertBefore(sspi, document.documentElement);
    sspi.getAttribute = function(name) {
    return document.documentElement.getAttribute(name);
    };
    
    
    
    
    var toolbar = document.createXULElement("vbox");
    toolbar.setAttribute("id", "downloadsStatusModokiBar");
    toolbar.setAttribute("collapsed", true);
    
    
    var bottombox = document.getElementById("browser-bottombox");
    bottombox.appendChild(toolbar);
    var browser = toolbar.appendChild(document.createXULElement("browser"));
    browser.setAttribute("disablehistory", true);
    browser.setAttribute("remote", false);
    browser.setAttribute("id", "ucjsDownloadsStatusModoki");
    browser.addEventListener("load", function(event){ucjsDownloadsStatusModoki.onload(event)}, true);
    browser.setAttribute("src", "chrome://browser/content/downloads/contentAreaDownloadsView.xul");
    
    
    var menuitem = document.createXULElement("menuitem");
    menuitem.setAttribute("id", "toggle_downloadsStatusModokiBar");
    menuitem.setAttribute("type", "checkbox");
    menuitem.setAttribute("autocheck", false);
    menuitem.setAttribute("label", "Download Leiste");
    menuitem.setAttribute("checked", false);
    menuitem.setAttribute("accesskey", "D");
    menuitem.setAttribute("oncommand", "ucjsDownloadsStatusModoki.toggleDownloadsStatusModokiBar()");
    var ref = document.getElementById("menu_customizeToolbars");
    ref.parentNode.insertBefore(menuitem, ref.previousSibling);
    
    
    // Ensure that the DownloadSummary object will be created asynchronously.
    if (!this._summary) {
    Downloads.getSummary(Downloads.ALL).then(summary => {
    this._summary = summary;
    return this._summary.addView(this);
    }).then(null, Cu.reportError);
    }
    if (!this._list) {
    Downloads.getList(Downloads.ALL).then(list => {
    this._list = list;
    return this._list.addView(this);
    }).then(null, Cu.reportError);
    }
    
    
    window.addEventListener("unload", this, false);
    },
    
    
    uninit: function() {
    window.removeEventListener("unload", this, false);
    if (this._summary) {
    this._summary.removeView(this);
    }
    if (this._list) {
    this._list.removeView(this);
    }
    },
    
    
    handleEvent: function(event) {
    switch (event.type) {
    case "unload":
    this.uninit();
    break;
    }
    },
    
    
    toggleDownloadsStatusModokiBar: function() {
    var collapsed = this.downloadsStatusModokiBar.collapsed;
    this.downloadsStatusModokiBar.collapsed = !collapsed;
    this.toggleMenuitem.setAttribute("checked", collapsed);
    },
    
    
    openDownloadsStatusModoki: function() {
    this.downloadsStatusModokiBar.collapsed = false;
    this.toggleMenuitem.setAttribute("checked", true);
    },
    
    
    hideDownloadsStatusModoki: function() {
    this.downloadsStatusModokiBar.collapsed = true;
    this.toggleMenuitem.setAttribute("checked", false);
    },
    
    
    onDownloadAdded: function (aDownload) {
    Cu.import("resource://gre/modules/Services.jsm");
    var showWhenStarting = true;
    try {
    showWhenStarting = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.showWhenStarting");
    } catch(e) {}
    this.numDls = 0;
    if (showWhenStarting) {
    if (this._list) {
    this._list.getAll().then(downloads => {
    for (let download of downloads) {
    if (!download.stopped)
    this.numDls++;
    }
    if (this.numDls > 0)
    this.openDownloadsStatusModoki(false);
    }).then(null, Cu.reportError);
    }
    }
    },
    
    
    onSummaryChanged: function () {
    Cu.import("resource://gre/modules/Services.jsm");
    if (!this._summary)
    return;
    if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) {
    var closeWhenDone = false;
    try {
    closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone");
    } catch(e) {}
    if (closeWhenDone) {
    this.hideDownloadsStatusModoki();
    }
    }
    },
    
    
    
    
    
    
    // chrome://browser/content/downloads/contentAreaDownloadsView.xul
    onload: function(event) {
    var doc = event.originalTarget;
    var win = doc.defaultView;
    
    
    var style = `
    @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
    #contentAreaDownloadsView {
    -moz-box-orient: horizontal;
    background-color: -moz-dialog;
    padding: 0;
    }
    
    
    #contentAreaDownloadsView > stack:first-child {
    }
    
    
    #downloadsRichListBox {
    background-color: -moz-dialog;
    display:inline-block !important;
    overflow-y: auto;
    scrollbar-width: thin;
    border: none;
    }
    
    
    :root
    {
    --downloads-item-height: 38px;
    }
    richlistitem {
    min-width:200px;
    max-width:200px;
    font-size: 13px;
    border-width: 0 1px 0 0;
    border-style: solid;
    border-color: black;
    }
    
    
    richlistitem vbox {
    }
    
    
    .downloadTypeIcon {
    height:16px;
    width: 16px;
    -moz-margin-end: 0px;
    -moz-margin-start: 1px;
    padding-right: 0;
    padding-left: 1px;
    }
    
    
    .downloadTarget {
    margin-top:1px;
    padding-bottom:16px;
    max-width: calc(100% - 50px) !important;
    min-width: calc(100% - 50px) !important;
    }
    
    
    .download-state[state="0"] * .downloadTarget,
    .download-state[state="4"] * .downloadTarget {
    padding-bottom:0px;
    }
    
    
    .downloadTarget:-moz-system-metric(windows-default-theme) {
    margin-top:2px;
    /*padding-bottom:10px; windows7 ?*/
    }
    
    
    .downloadProgress {
    margin-top:-16px;
    margin-bottom: -1px;
    height:12px;
    margin-inline-end: 0 !important;
    }
    
    
    .progress-bar {
    -moz-appearance:none !important;
    background-color: lime !important;
    }
    
    
    .progress-remainder {
    }
    
    
    .downloadDetails {
    margin-top:-12px;
    }
    
    
    .download-state:not(:-moz-any([state="-1"], [state="5"], [state="0"], [state="4"], [state="7"])) .downloadDetails {
    margin-top:-17px;
    }
    
    
    richlistitem[selected] .downloadDetails {
    opacity: 1;
    }
    
    
    .downloadButton {
    padding: 0;
    margin: 0;
    }
    
    
    button > .button-box {
    -moz-padding-start: 0px;
    -moz-padding-end: 1px;
    padding-right: 0 !important;
    padding-left: 0 !important;
    }
    
    
    #downloadFilter {
    width: 150px;
    }
    
    
    `.replace(/\s+/g, " ");
    var sspi = doc.createProcessingInstruction(
    'xml-stylesheet',
    'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
    );
    doc.insertBefore(sspi, doc.documentElement);
    sspi.getAttribute = function(name) {
    return doc.documentElement.getAttribute(name);
    };
    
    
    var button = doc.createXULElement("button");
    button.setAttribute("label", "Löschen");
    button.setAttribute("id", "ucjs_clearListButton");
    button.setAttribute("accesskey", "L");
    button.setAttribute("oncommand", "ucjsDownloadsStatusModoki_clearDownloads();");
    var ref = doc.getElementById("downloadCommands");
    var vbox = doc.createXULElement("vbox");
    var box = vbox.appendChild(doc.createXULElement("hbox"));
    box.appendChild(button);
    box.appendChild(doc.createXULElement("spacer")).setAttribute("flex", 1);
    var textbox = doc.createXULElement("textbox");
    textbox.setAttribute("id", "downloadFilter");
    textbox.setAttribute("clickSelectsAll", true);
    textbox.setAttribute("type", "search");
    textbox.setAttribute("placeholder", "Suchen...");
    textbox.setAttribute("oncommand", "ucjsDownloadsStatusModoki_doSearch(this.value);");
    box.appendChild(textbox);
    var closebtn = doc.createXULElement("toolbarbutton");
    closebtn.setAttribute("id", "ucjsDownloadsStatusModoki-closebutton");
    closebtn.setAttribute("class", "close-icon");
    closebtn.setAttribute("tooltiptext", "Download-Leiste schließen");
    closebtn.setAttribute("oncommand", "ucjsDownloadsStatusModoki_doClose();");
    box.appendChild(closebtn);
    ref.parentNode.insertBefore(vbox, ref);
    
    
    /*
    // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out
    var listBox = doc.getElementById("downloadsRichListBox");
    var placesView = listBox._placesView;
    if (placesView) {
    var place = placesView.place;
    placesView.place= null;
    placesView.place = place;
    }
    */
    win.ucjsDownloadsStatusModoki_clearDownloads = function ucjs_clearDownloads() {
    var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */
    var richListBox = doc.getElementById("downloadsRichListBox");
    
    
    Cu.import("resource://gre/modules/Services.jsm");
    var places = [];
    function addPlace(aURI, aTitle, aVisitDate) {
    places.push({
    uri: aURI,
    title: aTitle,
    visits: [{
    visitDate: (aVisitDate || Date.now()) * 1000,
    transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
    }]
    });
    }
    function moveDownloads2History() {
    if (DO_NOT_DELETE_HISTORY &&
    !PrivateBrowsingUtils.isWindowPrivate(window)) {
    try {
    for (let element of richListBox.childNodes) {
    let download = element._shell.download;
    let aURI = makeURI(download.source.url);
    // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value
    let aTitle = download.target.path;
    aTitle = aTitle.match( /[^\\]+$/i )[0];
    aTitle = aTitle.match( /[^/]+$/i )[0];
    
    
    let aVisitDate = download.endTime || download.startTime;
    addPlace(aURI, aTitle, aVisitDate)
    }
    } catch(ex) {}
    }
    
    
    // Clear List
    richListBox._placesView.doCommand('downloadsCmd_clearDownloads');
    
    
    if (DO_NOT_DELETE_HISTORY &&
    !PrivateBrowsingUtils.isWindowPrivate(window)) {
    try {
    if (places.length > 0) {
    var asyncHistory = Components.classes["@mozilla.org/browser/history;1"]
    .getService(Components.interfaces.mozIAsyncHistory);
    asyncHistory.updatePlaces(places);
    }
    } catch(ex) {}
    }
    }
    var btn = doc.getElementById("ucjs_clearListButton");
    btn.setAttribute("disabled", true);
    moveDownloads2History();
    btn.removeAttribute("disabled");
    
    
    // close toolbar
    var closeWhenDone = false;
    try {
    closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone");
    } catch(e) {}
    if (closeWhenDone) {
    top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki();
    }
    };
    
    
    win.ucjsDownloadsStatusModoki_doSearch = function ucjs_doSearch(filterString) {
    var richListBox = doc.getElementById("downloadsRichListBox");
    richListBox._placesView.searchTerm = filterString;
    };
    
    
    win.ucjsDownloadsStatusModoki_doClose = function ucjs_doClose() {
    top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki();
    };
    
    
    }
    
    
    }
    ucjsDownloadsStatusModoki.init();
    Alles anzeigen

    Mfg.
    Endor

  • Firefox 61 TABs sperren ?

    • Endor
    • 8. September 2019 um 09:17

    Prima, freut mich.

    Wie immer gern geschehen.

    Mfg.
    Endor

Unterstütze uns!

Jährlich (2026)

72,4 %

72,4% (560,79 von 775 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon