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. aborix

Beiträge von aborix

  • Der Glückwunsch-Thread

    • aborix
    • 18. März 2021 um 21:12

    Alles Gute!

  • Warnung beim Beenden vom Fx mit nur einem Tab

    • aborix
    • 16. März 2021 um 20:39

    Gern geschehen. :)

  • Warnung beim Beenden vom Fx mit nur einem Tab

    • aborix
    • 16. März 2021 um 08:41
    Zitat von geldhuegel

    wenn ich den FF starte und danach gleich wieder schließe kommt keine Warnung mehr.

    Wenn nach dem Start nur ein Tab mit der Startseite vorhanden ist, dann soll es ja so sein. Oder möchtest du es in diesem Fall anders haben?

    Zitat von geldhuegel

    Wenn ich offene Tabs hatte die alle wieder geschlossen wurden dann wird der letzte Tab mit Firefox-Startseite (Standard) angezeigt. Hier kommt auch bei deiner neuen Version die Abfrage.

    Im folgenden Skript kommt die Abfrage nicht bei den Seiten about:home und about:newtab. Beides ist die Standard-Startseite.

    JavaScript
    (function() {
    
      if (window.__SSi != 'window0')
        return;
    
      const { BrowserGlue } = ChromeUtils.import('resource:///modules/BrowserGlue.jsm');
    
      BrowserGlue.prototype._onQuitRequest = function BG__onQuitRequest(aCancelQuit, aQuitType) {
        if (aCancelQuit instanceof Ci.nsISupportsPRBool && aCancelQuit.data) {
          return;
        }
        if (aQuitType == "restart" || aQuitType == "os-restart") {
          return;
        }
        var windowcount = 0;
        var pagecount = 0;
        for (let win of BrowserWindowTracker.orderedWindows) {
          if (win.closed) {
            continue;
          }
          windowcount++;
          let tabbrowser = win.gBrowser;
          if (tabbrowser) {
            pagecount +=
              tabbrowser.browsers.length -
              tabbrowser._numPinnedTabs -
              tabbrowser._removingTabs.length;
          }
        }
        if (!aQuitType) {
          aQuitType = "quit";
        }
        if (!Services.prefs.getBoolPref("browser.warnOnQuit")) {
          return;
        }
        let sessionWillBeRestored =
          Services.prefs.getIntPref("browser.startup.page") == 3 ||
          Services.prefs.getBoolPref("browser.sessionstore.resume_session_once");
        if (sessionWillBeRestored) {
          if (
            !Services.prefs.getBoolPref("browser.sessionstore.warnOnQuit", false)
          ) {
            return;
          }
        } else if (!Services.prefs.getBoolPref("browser.tabs.warnOnClose")) {
          return;
        }
        let win = BrowserWindowTracker.getTopWindow();
        let warningMessage;
        if (windowcount > 1) {
          let tabSubstring = gTabBrowserBundle.GetStringFromName(
            "tabs.closeWarningMultipleWindowsTabSnippet"
          );
          tabSubstring = PluralForm.get(pagecount, tabSubstring).replace(
            /#1/,
            pagecount
          );
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleWindowsSessionRestore2"
            : "tabs.closeWarningMultipleWindows";
          let windowString = gTabBrowserBundle.GetStringFromName(stringID);
          windowString = PluralForm.get(windowcount, windowString).replace(
            /#1/,
            windowcount
          );
          warningMessage = windowString.replace(/%(?:1\\$)?S/i, tabSubstring);
        } else {
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleSessionRestore2"
            : "tabs.closeWarningMultiple";
          warningMessage = gTabBrowserBundle.GetStringFromName(stringID);
          warningMessage = PluralForm.get(pagecount, warningMessage).replace(
            "#1",
            pagecount
          );
        }
        let warnOnClose = { value: true };
        let titleId =
          AppConstants.platform == "win"
            ? "tabs.closeAndQuitTitleTabsWin"
            : "tabs.closeAndQuitTitleTabs";
        let flags =
          Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
          Services.prompt.BUTTON_TITLE_CANCEL * Services.prompt.BUTTON_POS_1;
        let checkboxLabel = !sessionWillBeRestored
          ? gTabBrowserBundle.GetStringFromName("tabs.closeWarningPromptMe")
          : null;
        let buttonPressed = 0;
        if (pagecount < 2) {
          let url = win.gBrowser.currentURI.spec;
          if (url != "about:home" && url != "about:newtab") {
            buttonPressed = Services.prompt.confirmEx(
              win,
              "Beenden und Tab schließen?",
              "Sie sind dabei, einen Tab und das Fenster zu schließen. " +
                "Soll dieser Vorgang fortgesetzt werden?",
              flags,
              "Fenster schließen",
              null,
              null,
              null,
              warnOnClose
            );
          }
        } else {
          buttonPressed = Services.prompt.confirmEx(
            win,
            gTabBrowserBundle.GetStringFromName(titleId),
            warningMessage,
            flags,
            gTabBrowserBundle.GetStringFromName("tabs.closeButtonMultiple"),
            null,
            null,
            checkboxLabel,
            warnOnClose
          );
        }
        if (!sessionWillBeRestored && buttonPressed == 0 && !warnOnClose.value) {
          Services.prefs.setBoolPref("browser.tabs.warnOnClose", false);
        }
        aCancelQuit.data = buttonPressed != 0;
      };
    
    })();
    Alles anzeigen
  • Warnung beim Beenden vom Fx mit nur einem Tab

    • aborix
    • 15. März 2021 um 22:15

    Ich habe das Skript aus #11 dahingehend abgeändert. Mit dem Skript aus #8 ist das natürlich ebenso machbar.

    Teste bitte:

    JavaScript
    (function() {
    
      if (window.__SSi != 'window0')
        return;
    
      const { BrowserGlue } = ChromeUtils.import('resource:///modules/BrowserGlue.jsm');
    
      BrowserGlue.prototype._onQuitRequest = function BG__onQuitRequest(aCancelQuit, aQuitType) {
        if (aCancelQuit instanceof Ci.nsISupportsPRBool && aCancelQuit.data) {
          return;
        }
        if (aQuitType == "restart" || aQuitType == "os-restart") {
          return;
        }
        var windowcount = 0;
        var pagecount = 0;
        for (let win of BrowserWindowTracker.orderedWindows) {
          if (win.closed) {
            continue;
          }
          windowcount++;
          let tabbrowser = win.gBrowser;
          if (tabbrowser) {
            pagecount +=
              tabbrowser.browsers.length -
              tabbrowser._numPinnedTabs -
              tabbrowser._removingTabs.length;
          }
        }
        if (!aQuitType) {
          aQuitType = "quit";
        }
        if (!Services.prefs.getBoolPref("browser.warnOnQuit")) {
          return;
        }
        let sessionWillBeRestored =
          Services.prefs.getIntPref("browser.startup.page") == 3 ||
          Services.prefs.getBoolPref("browser.sessionstore.resume_session_once");
        if (sessionWillBeRestored) {
          if (
            !Services.prefs.getBoolPref("browser.sessionstore.warnOnQuit", false)
          ) {
            return;
          }
        } else if (!Services.prefs.getBoolPref("browser.tabs.warnOnClose")) {
          return;
        }
        let win = BrowserWindowTracker.getTopWindow();
        let warningMessage;
        if (windowcount > 1) {
          let tabSubstring = gTabBrowserBundle.GetStringFromName(
            "tabs.closeWarningMultipleWindowsTabSnippet"
          );
          tabSubstring = PluralForm.get(pagecount, tabSubstring).replace(
            /#1/,
            pagecount
          );
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleWindowsSessionRestore2"
            : "tabs.closeWarningMultipleWindows";
          let windowString = gTabBrowserBundle.GetStringFromName(stringID);
          windowString = PluralForm.get(windowcount, windowString).replace(
            /#1/,
            windowcount
          );
          warningMessage = windowString.replace(/%(?:1\\$)?S/i, tabSubstring);
        } else {
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleSessionRestore2"
            : "tabs.closeWarningMultiple";
          warningMessage = gTabBrowserBundle.GetStringFromName(stringID);
          warningMessage = PluralForm.get(pagecount, warningMessage).replace(
            "#1",
            pagecount
          );
        }
        let warnOnClose = { value: true };
        let titleId =
          AppConstants.platform == "win"
            ? "tabs.closeAndQuitTitleTabsWin"
            : "tabs.closeAndQuitTitleTabs";
        let flags =
          Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
          Services.prompt.BUTTON_TITLE_CANCEL * Services.prompt.BUTTON_POS_1;
        let checkboxLabel = !sessionWillBeRestored
          ? gTabBrowserBundle.GetStringFromName("tabs.closeWarningPromptMe")
          : null;
        let buttonPressed = 0;
        if (pagecount < 2) {
          if (win.gBrowser.currentURI.spec != Services.prefs.getCharPref("browser.startup.homepage")) {
            buttonPressed = Services.prompt.confirmEx(
              win,
              "Beenden und Tab schließen?",
              "Sie sind dabei, einen Tab und das Fenster zu schließen. " +
                "Soll dieser Vorgang fortgesetzt werden?",
              flags,
              "Fenster schließen",
              null,
              null,
              null,
              warnOnClose
            );
          }
        } else {
          buttonPressed = Services.prompt.confirmEx(
            win,
            gTabBrowserBundle.GetStringFromName(titleId),
            warningMessage,
            flags,
            gTabBrowserBundle.GetStringFromName("tabs.closeButtonMultiple"),
            null,
            null,
            checkboxLabel,
            warnOnClose
          );
        }
        if (!sessionWillBeRestored && buttonPressed == 0 && !warnOnClose.value) {
          Services.prefs.setBoolPref("browser.tabs.warnOnClose", false);
        }
        aCancelQuit.data = buttonPressed != 0;
      };
    
    })();
    Alles anzeigen
  • Warnung beim Beenden vom Fx mit nur einem Tab

    • aborix
    • 14. März 2021 um 22:41

    Selbstverständlich ist das in Ordnung. Andernfalls dürfte man Code nicht öffentlich sichtbar machen, sondern müsste ihn z.B. per PN übermitteln.

    Hier noch eine Variante mit einem etwas veränderten Meldungstext. Es wird hervorgehoben, dass mit dem Tab auch das Fenster geschlossen wird.

    JavaScript
    (function() {
    
      if (window.__SSi != 'window0')
        return;
    
      const { BrowserGlue } = ChromeUtils.import('resource:///modules/BrowserGlue.jsm');
    
      BrowserGlue.prototype._onQuitRequest = function BG__onQuitRequest(aCancelQuit, aQuitType) {
        if (aCancelQuit instanceof Ci.nsISupportsPRBool && aCancelQuit.data) {
          return;
        }
        if (aQuitType == "restart" || aQuitType == "os-restart") {
          return;
        }
        var windowcount = 0;
        var pagecount = 0;
        for (let win of BrowserWindowTracker.orderedWindows) {
          if (win.closed) {
            continue;
          }
          windowcount++;
          let tabbrowser = win.gBrowser;
          if (tabbrowser) {
            pagecount +=
              tabbrowser.browsers.length -
              tabbrowser._numPinnedTabs -
              tabbrowser._removingTabs.length;
          }
        }
        if (!aQuitType) {
          aQuitType = "quit";
        }
        if (!Services.prefs.getBoolPref("browser.warnOnQuit")) {
          return;
        }
        let sessionWillBeRestored =
          Services.prefs.getIntPref("browser.startup.page") == 3 ||
          Services.prefs.getBoolPref("browser.sessionstore.resume_session_once");
        if (sessionWillBeRestored) {
          if (
            !Services.prefs.getBoolPref("browser.sessionstore.warnOnQuit", false)
          ) {
            return;
          }
        } else if (!Services.prefs.getBoolPref("browser.tabs.warnOnClose")) {
          return;
        }
        let win = BrowserWindowTracker.getTopWindow();
        let warningMessage;
        if (windowcount > 1) {
          let tabSubstring = gTabBrowserBundle.GetStringFromName(
            "tabs.closeWarningMultipleWindowsTabSnippet"
          );
          tabSubstring = PluralForm.get(pagecount, tabSubstring).replace(
            /#1/,
            pagecount
          );
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleWindowsSessionRestore2"
            : "tabs.closeWarningMultipleWindows";
          let windowString = gTabBrowserBundle.GetStringFromName(stringID);
          windowString = PluralForm.get(windowcount, windowString).replace(
            /#1/,
            windowcount
          );
          warningMessage = windowString.replace(/%(?:1\\$)?S/i, tabSubstring);
        } else {
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleSessionRestore2"
            : "tabs.closeWarningMultiple";
          warningMessage = gTabBrowserBundle.GetStringFromName(stringID);
          warningMessage = PluralForm.get(pagecount, warningMessage).replace(
            "#1",
            pagecount
          );
        }
        let warnOnClose = { value: true };
        let titleId =
          AppConstants.platform == "win"
            ? "tabs.closeAndQuitTitleTabsWin"
            : "tabs.closeAndQuitTitleTabs";
        let flags =
          Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
          Services.prompt.BUTTON_TITLE_CANCEL * Services.prompt.BUTTON_POS_1;
        let checkboxLabel = !sessionWillBeRestored
          ? gTabBrowserBundle.GetStringFromName("tabs.closeWarningPromptMe")
          : null;
        let buttonPressed;
        if (pagecount < 2) {
          buttonPressed = Services.prompt.confirmEx(
            win,
            "Beenden und Tab schließen?",
            "Sie sind dabei, einen Tab und das Fenster zu schließen. " +
              "Soll dieser Vorgang fortgesetzt werden?",
            flags,
            "Fenster schließen",
            null,
            null,
            null,
            warnOnClose
          );
        } else {
          buttonPressed = Services.prompt.confirmEx(
            win,
            gTabBrowserBundle.GetStringFromName(titleId),
            warningMessage,
            flags,
            gTabBrowserBundle.GetStringFromName("tabs.closeButtonMultiple"),
            null,
            null,
            checkboxLabel,
            warnOnClose
          );
        }
        if (!sessionWillBeRestored && buttonPressed == 0 && !warnOnClose.value) {
          Services.prefs.setBoolPref("browser.tabs.warnOnClose", false);
        }
        aCancelQuit.data = buttonPressed != 0;
      };
    
    })();
    Alles anzeigen
  • Warnung beim Beenden vom Fx mit nur einem Tab

    • aborix
    • 14. März 2021 um 00:42

    Teste folgendes Skript. Die Warnung bei nur einem Tab erfolgt nicht, wenn noch weitere Fenster offen sind.

    JavaScript
    (function() {
    
      if (window.__SSi != 'window0')
        return;
    
      const { BrowserGlue } = ChromeUtils.import('resource:///modules/BrowserGlue.jsm');
    
      BrowserGlue.prototype._onQuitRequest = function BG__onQuitRequest(aCancelQuit, aQuitType) {
        if (aCancelQuit instanceof Ci.nsISupportsPRBool && aCancelQuit.data) {
          return;
        }
        if (aQuitType == "restart" || aQuitType == "os-restart") {
          return;
        }
        var windowcount = 0;
        var pagecount = 0;
        for (let win of BrowserWindowTracker.orderedWindows) {
          if (win.closed) {
            continue;
          }
          windowcount++;
          let tabbrowser = win.gBrowser;
          if (tabbrowser) {
            pagecount +=
              tabbrowser.browsers.length -
              tabbrowser._numPinnedTabs -
              tabbrowser._removingTabs.length;
          }
        }
        //if (pagecount < 2) {
        //  return;
        //}
        if (!aQuitType) {
          aQuitType = "quit";
        }
        if (!Services.prefs.getBoolPref("browser.warnOnQuit")) {
          return;
        }
        let sessionWillBeRestored =
          Services.prefs.getIntPref("browser.startup.page") == 3 ||
          Services.prefs.getBoolPref("browser.sessionstore.resume_session_once");
        if (sessionWillBeRestored) {
          if (
            !Services.prefs.getBoolPref("browser.sessionstore.warnOnQuit", false)
          ) {
            return;
          }
        } else if (!Services.prefs.getBoolPref("browser.tabs.warnOnClose")) {
          return;
        }
        let win = BrowserWindowTracker.getTopWindow();
        let warningMessage;
        if (windowcount > 1) {
          let tabSubstring = gTabBrowserBundle.GetStringFromName(
            "tabs.closeWarningMultipleWindowsTabSnippet"
          );
          tabSubstring = PluralForm.get(pagecount, tabSubstring).replace(
            /#1/,
            pagecount
          );
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleWindowsSessionRestore2"
            : "tabs.closeWarningMultipleWindows";
          let windowString = gTabBrowserBundle.GetStringFromName(stringID);
          windowString = PluralForm.get(windowcount, windowString).replace(
            /#1/,
            windowcount
          );
          warningMessage = windowString.replace(/%(?:1\\$)?S/i, tabSubstring);
        } else {
          let stringID = sessionWillBeRestored
            ? "tabs.closeWarningMultipleSessionRestore2"
            : "tabs.closeWarningMultiple";
          warningMessage = gTabBrowserBundle.GetStringFromName(stringID);
          warningMessage = PluralForm.get(pagecount, warningMessage).replace(
            "#1",
            pagecount
          );
        }
        let warnOnClose = { value: true };
        let titleId =
          AppConstants.platform == "win"
            ? "tabs.closeAndQuitTitleTabsWin"
            : "tabs.closeAndQuitTitleTabs";
        let flags =
          Services.prompt.BUTTON_TITLE_IS_STRING * Services.prompt.BUTTON_POS_0 +
          Services.prompt.BUTTON_TITLE_CANCEL * Services.prompt.BUTTON_POS_1;
        let checkboxLabel = !sessionWillBeRestored
          ? gTabBrowserBundle.GetStringFromName("tabs.closeWarningPromptMe")
          : null;
        let stringID = pagecount < 2
          ? "tabs.closeTab"
          : "tabs.closeButtonMultiple";
        let buttonPressed = Services.prompt.confirmEx(
          win,
          gTabBrowserBundle.GetStringFromName(titleId),
          warningMessage,
          flags,
          //gTabBrowserBundle.GetStringFromName("tabs.closeButtonMultiple"),
          gTabBrowserBundle.GetStringFromName(stringID),
          null,
          null,
          checkboxLabel,
          warnOnClose
        );
        if (!sessionWillBeRestored && buttonPressed == 0 && !warnOnClose.value) {
          Services.prefs.setBoolPref("browser.tabs.warnOnClose", false);
        }
        aCancelQuit.data = buttonPressed != 0;
      };
    
    })();
    Alles anzeigen
  • Der Glückwunsch-Thread

    • aborix
    • 7. März 2021 um 08:25

    Alles Gute, und Gesundheit! :)

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

    • aborix
    • 4. März 2021 um 21:07

    Ungetestet:

    JavaScript
    restart: () => {
      Services.appinfo.invalidateCachesOnRestart();
      Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
    }
  • website Navi und suchfeld sollen stehen fest ?

    • aborix
    • 25. Februar 2021 um 09:09

    Teste:

    CSS
    #headNav {
      position: static !important;
      margin-top: -40px !important;
    }
    
    #search-v {
      position: static !important;
      width: 435px !important;
    }
    
    #search-v + button {
      position: static !important;
      min-height: 32px !important;
      margin-top: -1px !important;
    }
    
    #quicksearch {
      width: 504px !important;
    }
    Alles anzeigen
  • Firefox minimiert starten

    • aborix
    • 23. Februar 2021 um 00:48
    Zitat von Bastian

    Und durch irgendein Script oder so kann man das Ziel "Firefox minimiert in der Taskleiste starten lassen" nicht erreichen ?

    Teste mal:

    JavaScript
    if (window.gBrowser)
      window.minimize();
  • Scripte Funktionieren nicht in Version 85 ?

    • aborix
    • 17. Februar 2021 um 09:04

    Ein Skript-Variante ohne Timeout-Wert:

    JavaScript
    (function() {
    
      if (!window.gBrowser)
        return;
    
      function setFunction() {
        PlacesViewBase.prototype._mayAddCommandsItems = function PVB__mayAddCommandsItems(aPopup) {
          if (aPopup == this._rootElt)
            return;
          let hasMultipleURIs = false;
          if (aPopup._placesNode.childCount > 0) {
            let currentChild = aPopup.firstElementChild;
            let numURINodes = 0;
            while (currentChild) {
              if (currentChild.localName == "menuitem" && currentChild._placesNode) {
                if (++numURINodes == 2)
                  break;
              }
              currentChild = currentChild.nextElementSibling;
            }
            hasMultipleURIs = numURINodes > 1;
          }
          if (!hasMultipleURIs)
            aPopup.setAttribute("nofooterpopup", "true");
          else
            aPopup.removeAttribute("nofooterpopup");
          if (!hasMultipleURIs) {
            if (aPopup._endOptOpenAllInTabs) {
              aPopup.removeChild(aPopup._endOptOpenAllInTabs);
              aPopup._endOptOpenAllInTabs = null;
              aPopup.removeChild(aPopup._endOptSeparator);
              aPopup._endOptSeparator = null;
            }
          } else if (!aPopup._endOptOpenAllInTabs) {
            aPopup._endOptSeparator = document.createXULElement("menuseparator");
            aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator";
            aPopup.appendChild(aPopup._endOptSeparator);
            aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem");
            aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem";
            if (typeof this.options.extraClasses.entry == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.entry
              );
            }
            if (typeof this.options.extraClasses.footer == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.footer
              );
            }
            aPopup._endOptOpenAllInTabs.setAttribute(
              "oncommand",
              "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " +
                "PlacesUIUtils.getViewForNode(this));"
            );
            aPopup._endOptOpenAllInTabs.setAttribute(
              "onclick",
              "checkForMiddleClick(this, event); event.stopPropagation();"
            );
            let menuitemsCount = 0;
            for (let node of aPopup.childNodes) {
              if (node.localName == 'menuitem')
                menuitemsCount++;
            }
            aPopup._endOptOpenAllInTabs.setAttribute(
              "label",
              " " + menuitemsCount + " <- " + gNavigatorBundle.getString("menuOpenAllInTabs.label")
            );
            aPopup.appendChild(aPopup._endOptOpenAllInTabs);
          }
        }
      }
    
      let intID = setInterval(function() {
        if (window.PlacesViewBase) {
          clearInterval(intID);
          setFunction();
        }
      }, 500);
    
    })();
    Alles anzeigen
  • Der Glückwunsch-Thread

    • aborix
    • 11. Februar 2021 um 19:31

    Alles Gute!

  • was wäre besser class oder ID ?

    • aborix
    • 11. Februar 2021 um 09:06

    id ist besser. Eine ID hat nur ein Element, einer Klasse können mehere Elemente angehören. Der Button "Fertig" hat auch die gleiche Klasse wie der Button "Lesezeichen entfernen". Wenn du nur den Klassennamen verwendest, werden beide Elemente angesprochen.

  • Suche Script für Speichern im Ordner ganz oben

    • aborix
    • 10. Februar 2021 um 21:26

    Teste:

    JavaScript
    (function() {
    
      if (!window.gBrowser)
        return;
    
      if (window.__SSi == 'window0') {
        let listener = function(events) {
          for (let event of events) {
            if (event.itemType ==  PlacesUtils.bookmarks.TYPE_BOOKMARK) {
              PlacesUtils.bookmarks.moveToFolder([event.guid], event.parentGuid, 0);
            }
          }
        }
        PlacesUtils.observers.addListener(['bookmark-added'], listener);
      }
    
      let bmService = Cc['@mozilla.org/browser/nav-bookmarks-service;1'].getService(Ci.nsINavBookmarksService);
    
      let observer = {
        onItemMoved: (a1,a2,a3,a4,newIndex,a6,guid,a8,newParentGuid,a10,a11) => {
          PlacesUtils.bookmarks.moveToFolder([guid], newParentGuid, 0);
        }
      }
    
      StarUI.panel.addEventListener('popupshown', function(event) {
        if (event.target != this)
          return;
        bmService.addObserver(observer, false);
      });
    
      StarUI.panel.addEventListener('popuphiding', function(event) {
        if (event.target != this)
          return;
        bmService.removeObserver(observer);
      });
    
    })();
    Alles anzeigen
  • Scripte Funktionieren nicht in Version 85 ?

    • aborix
    • 1. Februar 2021 um 22:58

    Testet bitte. Die Änderungen sind ab Zeile 60. Weiter oben wird nur überprüft, ob der Ordner mehr als ein Lesezeichen enthält.

    JavaScript
    (function() {
    
      setTimeout(function() {
    
        if (!window.PlacesViewBase)
          return;
    
        PlacesViewBase.prototype._mayAddCommandsItems = function PVB__mayAddCommandsItems(aPopup) {
          if (aPopup == this._rootElt)
            return;
          let hasMultipleURIs = false;
          if (aPopup._placesNode.childCount > 0) {
            let currentChild = aPopup.firstElementChild;
            let numURINodes = 0;
            while (currentChild) {
              if (currentChild.localName == "menuitem" && currentChild._placesNode) {
                if (++numURINodes == 2)
                  break;
              }
              currentChild = currentChild.nextElementSibling;
            }
            hasMultipleURIs = numURINodes > 1;
          }
          if (!hasMultipleURIs)
            aPopup.setAttribute("nofooterpopup", "true");
          else
            aPopup.removeAttribute("nofooterpopup");
          if (!hasMultipleURIs) {
            if (aPopup._endOptOpenAllInTabs) {
              aPopup.removeChild(aPopup._endOptOpenAllInTabs);
              aPopup._endOptOpenAllInTabs = null;
              aPopup.removeChild(aPopup._endOptSeparator);
              aPopup._endOptSeparator = null;
            }
          } else if (!aPopup._endOptOpenAllInTabs) {
            aPopup._endOptSeparator = document.createXULElement("menuseparator");
            aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator";
            aPopup.appendChild(aPopup._endOptSeparator);
            aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem");
            aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem";
            if (typeof this.options.extraClasses.entry == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.entry
              );
            }
            if (typeof this.options.extraClasses.footer == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.footer
              );
            }
            aPopup._endOptOpenAllInTabs.setAttribute(
              "oncommand",
              "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " +
                "PlacesUIUtils.getViewForNode(this));"
            );
            aPopup._endOptOpenAllInTabs.setAttribute(
              "onclick",
              "checkForMiddleClick(this, event); event.stopPropagation();"
            );
            let menuitemsCount = 0;
            for (let node of aPopup.childNodes) {
              if (node.localName == 'menuitem')
                menuitemsCount++;
            }
            aPopup._endOptOpenAllInTabs.setAttribute(
              "label",
              " " + menuitemsCount + " <- " + gNavigatorBundle.getString("menuOpenAllInTabs.label")
            );
            aPopup.appendChild(aPopup._endOptOpenAllInTabs);
          }
        };
    
      }, 1000);
    
    })();
    Alles anzeigen
  • Scripte Funktionieren nicht in Version 85 ?

    • aborix
    • 28. Januar 2021 um 21:59

    Teste:

    JavaScript
    (function() {
    
      setTimeout(function() {
    
        if (!window.PlacesViewBase)
          return;
    
        PlacesViewBase.prototype._mayAddCommandsItems = function PVB__mayAddCommandsItems(aPopup) {
          if (aPopup == this._rootElt)
            return;
          let hasMultipleURIs = false;
          if (aPopup._placesNode.childCount > 0) {
            let currentChild = aPopup.firstElementChild;
            let numURINodes = 0;
            while (currentChild) {
              if (currentChild.localName == "menuitem" && currentChild._placesNode) {
                if (++numURINodes == 2)
                  break;
              }
              currentChild = currentChild.nextElementSibling;
            }
            hasMultipleURIs = numURINodes > 1;
          }
          if (!hasMultipleURIs)
            aPopup.setAttribute("nofooterpopup", "true");
          else
            aPopup.removeAttribute("nofooterpopup");
          if (!hasMultipleURIs) {
            if (aPopup._endOptOpenAllInTabs) {
              aPopup.removeChild(aPopup._endOptOpenAllInTabs);
              aPopup._endOptOpenAllInTabs = null;
              aPopup.removeChild(aPopup._endOptSeparator);
              aPopup._endOptSeparator = null;
            }
          } else if (!aPopup._endOptOpenAllInTabs) {
            aPopup._endOptSeparator = document.createXULElement("menuseparator");
            aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator";
            aPopup.appendChild(aPopup._endOptSeparator);
            aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem");
            aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem";
            if (typeof this.options.extraClasses.entry == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.entry
              );
            }
            if (typeof this.options.extraClasses.footer == "string") {
              aPopup._endOptOpenAllInTabs.classList.add(
                this.options.extraClasses.footer
              );
            }
            aPopup._endOptOpenAllInTabs.setAttribute(
              "oncommand",
              "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " +
                "PlacesUIUtils.getViewForNode(this));"
            );
            aPopup._endOptOpenAllInTabs.setAttribute(
              "onclick",
              "checkForMiddleClick(this, event); event.stopPropagation();"
            );
            aPopup._endOptOpenAllInTabs.setAttribute(
              "label",
              " " + aPopup._placesNode.childCount + " <- " +
                gNavigatorBundle.getString("menuOpenAllInTabs.label")
            );
            aPopup.appendChild(aPopup._endOptOpenAllInTabs);
          }
        };
    
      }, 1000);
    
    })();
    Alles anzeigen
  • In memoriam

    • aborix
    • 25. Januar 2021 um 11:44

    Arik Brauer ist verstorben.

  • alles Tabs als Lesezeichen hinzufügen - ganz oben ?

    • aborix
    • 2. Januar 2021 um 22:54

    Das Skript hat die Nebenwirkung, dass sich Lesezeichen innerhalb des Menüs nicht verschieben lassen. Folgendes Skript funktioniert einwandfrei:

    JavaScript
    (function() {
    
      if (location != 'chrome://browser/content/places/bookmarkProperties2.xhtml')
        return;
    
      const menuGuid = PlacesUtils.bookmarks.menuGuid;
    
      let bookmarksService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"]
                             .getService(Ci.nsINavBookmarksService);
    
      let observer = {
        onItemMoved: (a1, a2, a3, a4, newIndex, a6, guid, a8, newParentGuid, a10, a11) => {
          if (newParentGuid == menuGuid && newIndex != 0) {
            PlacesUtils.bookmarks.moveToFolder([guid], menuGuid, 0);
          };
        }
      };
    
      bookmarksService.addObserver(observer, false);
    
      window.addEventListener('unload', () =>
        bookmarksService.removeObserver(observer)
      );
    
    })();
    Alles anzeigen
  • alles Tabs als Lesezeichen hinzufügen - ganz oben ?

    • aborix
    • 2. Januar 2021 um 09:10

    Hallo,

    teste bitte:

    JavaScript
    (function() {
    
      if (window.__SSi != 'window0')
        return;
    
      const menuGuid = PlacesUtils.bookmarks.menuGuid;
    
      let bookmarksService = Cc["@mozilla.org/browser/nav-bookmarks-service;1"]
                             .getService(Ci.nsINavBookmarksService);
    
      let observer = {
        onItemMoved: (a1, a2, a3, a4, newIndex, a6, guid, a8, newParentGuid, a10, a11) => {
          if (newParentGuid == menuGuid && newIndex != 0) {
            PlacesUtils.bookmarks.moveToFolder([guid], menuGuid, 0);
          };
        }
      };
    
      bookmarksService.addObserver(observer, false);
    
    })();
    Alles anzeigen
  • Frohe Weihnachten und einen guten Rutsch

    • aborix
    • 2. Januar 2021 um 08:04

    Alles Gute im neuen Jahr, vor allem Gesundheit!

Unterstütze uns!

Jährlich (2025)

74,7 %

74,7% (485,86 von 650 EUR)

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