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

Beiträge von FuchsFan

  • Popup der Suchmaschinen ohne Icons

    • FuchsFan
    • 31. Mai 2026 um 20:00
    Zitat von 2002Andreas

    Hier werden die Icons in allen Profilen angezeigt.

    Danke, Andreas, für den Text suche ich mir das Passende raus. :thumbup:

    Nun habe ich den Ordner Scripte entfernt, alle Icon da, also auf zur Jagd.;)

  • Popup der Suchmaschinen ohne Icons

    • FuchsFan
    • 31. Mai 2026 um 19:47
    Zitat von 2002Andreas

    Evtl. funkt dir ein anderer Code dazwischen

    Alle Codes deaktiviert, keine Änderung. Es ist je nichts weiter verändert worden, nur das Update von 150 auf 151.

    Für den Text habe ich das noch probiert, müsste funktionieren, wie es aussieht.

    CSS
    panel-item.searchmode-switcher-installed::part(label) {
      font-size: 1.2em !important;
      font-weight: 600 !important;
    }
  • Popup der Suchmaschinen ohne Icons

    • FuchsFan
    • 31. Mai 2026 um 19:08

    Bis Version 150.0.2 wurden die Icon angezeigt. Ab Version 151 sieht es dann so aus

    Es ist merkwürdig, in einigen Versionen Beta und Nightly werden sie angezeigt, in anderen wieder nicht. Woran kann das eventuell liegen?

    Ich versuche auch den Text (die Namen) anzupassen, was mir nur mit dem Code gelingt, der aber auch auf andere Teile zugreift (z.B. Sucheinstellungen). Gibt es noch eine weitere Möglichkeit, um das nur auf die Item (Namen) zu begrenzen?

    CSS
    ::part(label) {
      font-size: 1.2em !important;
      font-weight: 600 !important;
    }
  • Anzeige unter about:addons in Nightly verändert

    • FuchsFan
    • 24. Mai 2026 um 22:22

    Boersenfeger

    Ich habe nochmals versucht deine Button nach dem Original anzupassen, eventuell kannst du es gebrauchen.

    CSS
    @-moz-document url-prefix("about:addons") {
    
    /* =========================================
       Sidebar Buttons (alle)
    ========================================= */
    
    moz-page-nav-button {
        background: lightgrey !important;
        color: black !important;
        border: 2px solid grey !important;
    	border-radius: 50px !important;
    	box-shadow: inset 0 0 5px 5px #888 !important;
    }
    
    /* =========================================
       Hover (nur bei inaktiv sichtbar)
    ========================================= */
    
    moz-page-nav-button:hover {
        background: blue !important;
        color: white !important;
        border-color: brown !important;
    	box-shadow: inset 0 0 5px 5px #888 !important;
    }
    
    /* aktiver Button */
    button[selected] {
        color: white !important;
        background-color: red !important;
    	border-radius: 50px !important;
    	box-shadow: inset 0 0 5px 5px #888 !important;
    }
    
    /* optional hover für aktiven Button */
    /* button[selected]:hover {
        color: white !important;
        background-color: #8A2BE2 !important;
    } */
    }
    Alles anzeigen
  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • FuchsFan
    • 23. Mai 2026 um 21:46

    Das Script wurde überarbeitet, alle Vorkommen von ownerGlobal durch documentGlobal ersetzt, damit es ab Version 152 wieder funktioniert.

    JavaScript
    // 'MultiRowTabs@BuF.uc.js' – Logik-Version mit MultiRow + DnD + Emoji-Marker
    // Styling (Farben, Tabhöhe, Breite, max. Zeilen) in userChrome.css
    
    "use strict";
    
    MultiRowTabs();
    
    function MultiRowTabs() {
      if (!window.gBrowser) {
        return;
      }
    
      // ----------------------------
      // --- User-Settings: Start ---
      // ----------------------------
    
      // Position der Tab-Leiste:
      //
      // [1] Tab-Leiste ist oberhalb aller Symbolleisten
      // [2] Tab-Leiste ist unterhalb aller Symbolleisten, aber über dem Inhaltsbereich
      // [6] Tab-Leiste ist unterhalb des Inhaltsbereichs 
      var nTabbarPosition = 2;
    
      // MultiRow-Einstellungen (nur horizontale Positionen [1], [2], [6])
      // Die tatsächliche Zeilenanzahl wird ausschließlich über CSS (max-height) begrenzt.
      var nTabLines     = 3;      // Dokumentationswert; in userChrome.css via max-height nachziehen
      var bTabScrollbar = true;   // Scrollbar für Tab-Leiste anzeigen
      var bTabTooltips  = false;  // Tab-Tooltips (Tabvorschau) anzeigen?
    
      // Einstellungen für Maus-Bedienung
      var bTabWheel               = false; // Tab per Mausrad wechseln
      var bPageScroll             = true;  // seitenweises Scrollen (statt zeilenweise)
      var bDblclickOnTabbarNewTab = true;  // Doppelklick auf freie Tabbar -> neuer Tab
      var bDblclickOnTabReloadTab = true;  // Doppelklick auf Tab -> Reload
    
      // ----------------------------
      // --- User-Settings: Ende ---
      // ----------------------------    
    
      let strHomepageURL;
      try {
        strHomepageURL = Services.prefs.getCharPref("browser.startup.homepage");
      } catch (e) {
        console.log("Error Homepage-String loading...");
      }
    
      if (nTabbarPosition < 1 || (nTabbarPosition != 1 && nTabbarPosition != 2 && nTabbarPosition != 6)) {
        nTabbarPosition = 1;
      }
    
      // Tab-Leiste ganz unten 
      if (nTabbarPosition == 6) {
        let tabbarBoxBottom = document.createXULElement("vbox");
        tabbarBoxBottom.id = "tabbarboxbottom";
    
        document
          .getElementById("navigator-toolbox")
          .parentNode.insertBefore(tabbarBoxBottom, null);
    
        let tabbar = document.getElementById("TabsToolbar");
        tabbarBoxBottom.appendChild(tabbar);
      }
    
      // -------------------------------------------------------------
      // Grund-CSS für Slot-Layout & Scrollbar (keine Farben!)
      // -------------------------------------------------------------
      {
        let cssAgent = `
          /* Scrollbars in der Tabbar sollen nicht als Fenster-Drag-Bereich dienen */
          scrollbar,
          scrollcorner,
          scrollbar thumb,
          scrollbar scrollbarbutton {
            -moz-window-dragging: no-drag !important;
          }
    
          /* Slot-Inhalt (Tabs) direkt in den Flex-Container holen */
          scrollbox[smoothscroll="true"] > slot {
            display: contents !important;
          }
        `;
    
        let sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(
          Ci.nsIStyleSheetService
        );
        let uriAgent = makeURI(
          "data:text/css;charset=UTF=8," + encodeURIComponent(cssAgent)
        );
        if (!sss.sheetRegistered(uriAgent, sss.AGENT_SHEET)) {
          sss.loadAndRegisterSheet(uriAgent, sss.AGENT_SHEET);
        }
      }
    
      {
        // MultiRow-Layout: Wrap, keine Pfeile, „Alle Tabs“-Button entfernen
        let cssAuthor = `
          #tabbrowser-tabs {
            --tab-overflow-pinned-tabs-width: 0px !important;
          }
          
          #alltabs-button,
          hbox.titlebar-spacer,
          #tabbrowser-arrowscrollbox::part(scrollbutton-up), 
          #tabbrowser-arrowscrollbox::part(scrollbutton-down),
          #tabbrowser-arrowscrollbox::part(overflow-start-indicator), 
          #tabbrowser-arrowscrollbox::part(overflow-end-indicator) {
            display: none !important;
          }
          
          tabs > arrowscrollbox::part(scrollbox) {
            flex-wrap: wrap !important;
            overflow-x: hidden !important;
            overflow-y: ${bTabScrollbar ? "auto" : "hidden"} !important;
          }
        `;
    
        let sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(
          Ci.nsIStyleSheetService
        );
        let uriAuthor = makeURI(
          "data:text/css;charset=UTF=8," + encodeURIComponent(cssAuthor)
        );
        if (!sss.sheetRegistered(uriAuthor, sss.AUTHOR_SHEET)) {
          sss.loadAndRegisterSheet(uriAuthor, sss.AUTHOR_SHEET);
        }
      }
    
      // Tab-Leiste unterhalb der Symbolleisten (Position 2)
      if (nTabbarPosition == 2) {
        let tabbar = document.getElementById("TabsToolbar");
        tabbar.parentNode.appendChild(tabbar);
      }
    
      //------------------------------------------------------------------------------------------
    
      var tabsToolbar   = document.getElementById("TabsToolbar");
      var tabsscrollbox = document.getElementById("tabbrowser-arrowscrollbox");
      var ScrollBox     = tabsscrollbox.scrollbox;    
    
      // ----------------------------------
      // Load-Event: MultiRow aktivieren (keine Höhenberechnung mehr)
      // ----------------------------------
      function onReady() {
        console.log("MultiRowTabs OnReady");
        // Auswahl sichtbar halten
        gBrowser.selectedTab.scrollIntoView();
      }    
        
      if (document.readyState !== "loading") {
        setTimeout(onReady, 500); 
      } else {
        window.addEventListener("DOMContentLoaded", onReady);
      }
    
      // ----------------------------------
      // ToggleMenuObserver (Menüleiste ein/aus) – nur für Position 2/6
      // ----------------------------------
      if (nTabbarPosition == 2 || nTabbarPosition == 6) {
        let targetMenubar = document.getElementById("toolbar-menubar");
        let titlebar      = document.querySelector("#navigator-toolbox>vbox#titlebar");
    
        const callback = (mutationList, observer) => {
          for (const mutation of mutationList) {
            if (mutation.type === "attributes") {
              let bInactive = targetMenubar.getAttribute("inactive");
              if (bInactive == "true") {
                titlebar.style.display = "none";
              } else {
                titlebar.style.display = "initial";
              }
            }
          }
        };
        
        let observerToggleMenu = new MutationObserver(callback);
        let configObserver = {
          attributes: true,
          attributeFilter: ["autohide","inactive"]
        };
        observerToggleMenu.observe(targetMenubar, configObserver);    
      }
    
      // ----------------------------------
      // Middleclick auf Tab -> Close Tab
      // ----------------------------------
      gBrowser.tabContainer.addEventListener(
        "click",
        function(event) {
          if (event.button == 1) {
            let element = event.target.parentNode;
            while (element) {
              if (element.localName == "tab") {
                gBrowser.removeTab(element, { animate: false });
                event.preventDefault();
                event.stopPropagation();    
                return;
              }
              element = element.parentNode;
            }
          }
        },
        true
      );
    
      // ----------------------------------
      // Middleclick auf TabsToolbar -> New Tab
      // ----------------------------------
      tabsToolbar.addEventListener(
        "click",
        function(event) {
          if (event.button == 1) {
            if (event.target.parentNode.id == "TabsToolbar") { 
              if (strHomepageURL) {
                event.target.documentGlobal.openTrustedLinkIn(strHomepageURL,"tab");
              } else {
                BrowserOpenTab();
              }
              return;
            }
          }
        },
        true
      );
    
      // ----------------------------------
      // Doubleclick auf TabsToolbar -> New Tab
      // ----------------------------------
      tabsToolbar.addEventListener(
        "dblclick",
        function(event) {
          if (!bDblclickOnTabbarNewTab) return;
          if (event.button == 0) {
            if (event.target.parentNode.id == "TabsToolbar") {
              if (strHomepageURL) {
                event.target.documentGlobal.openTrustedLinkIn(strHomepageURL,"tab");
              } else {
                BrowserOpenTab();
              }
              event.preventDefault();
              event.stopPropagation();    
              return;
            }
          }
        },
        true
      );
            
      // ----------------------------------
      // Doubleclick auf leeren Bereich in TabContainer -> New Tab
      // ----------------------------------
      gBrowser.tabContainer.addEventListener(
        "dblclick",
        function(event) {
          if (!bDblclickOnTabbarNewTab) return;
          if (event.button == 0) {
            let element = event.target.parentNode;
            if (element == gBrowser.tabContainer) {
              if (strHomepageURL) {
                event.target.documentGlobal.openTrustedLinkIn(strHomepageURL,"tab");
              } else {
                BrowserOpenTab();
              }
              event.preventDefault();
              event.stopPropagation();    
              return;
            }
          }
        },
        true
      );
        
      // ----------------------------------
      // Doubleclick auf Tab -> Reload Tab
      // ----------------------------------
      gBrowser.tabContainer.addEventListener(
        "dblclick",
        function(event) {
          if (!bDblclickOnTabReloadTab) return;
          if (event.button == 0) {
            let element = event.target.parentNode;
            while (element) {
              if (element.localName == "tab") {
                element.linkedBrowser.reload();
                return;
              }
              element = element.parentNode;
            }
          }
        },
        true
      );
    
      // ----------------------------------
      // TabSelect -> Tab in Sicht bekommen
      // ----------------------------------
      gBrowser.tabContainer.addEventListener(
        "TabSelect",
        function(event) {
          let bScroll    = false;
          let bScrollTop = true;
                    
          let scrollBoxY1     = event.target.parentElement.scrollbox.screenY;
          let scrollBoxHeight = event.target.parentElement.scrollbox.clientHeight;
          let scrollBoxY2     = scrollBoxY1 + scrollBoxHeight;
            
          let TabSelY1     = event.target.screenY;
          let TabSelHeight = event.target.clientHeight;
          let TabSelY2     = TabSelY1 + TabSelHeight;
            
          if (TabSelY2 > scrollBoxY2) {
            bScroll    = true;
            bScrollTop = false;
          }
          if (TabSelY1 < scrollBoxY1) {
            bScroll    = true;
            bScrollTop = true;
          }
            
          if (bScroll) {
            setTimeout(function() {
              event.target.scrollIntoView(bScrollTop);
            }, 0);
          }
        },
        true
      );
          
      // ----------------------------------
      // Wheel-Event über Tab-Leiste  
      // ----------------------------------
      let tabsScrollbox2 = document.getElementById(
        "tabbrowser-arrowscrollbox"
      ).scrollbox;
    
      tabsScrollbox2.addEventListener(
        "wheel",
        function(event) {
          event.preventDefault();
          event.stopPropagation();
            
          let scrollUp    = true;
          let wrap        = false;
          let scrollBoxY1 =
            gBrowser.tabContainer._animateElement.scrollbox.scrollTop; 
          let scrollHeight;
            
          if (bPageScroll) {
            scrollHeight =
              gBrowser.tabContainer._animateElement.scrollbox.clientHeight;
          } else {            
            let firstTab = gBrowser.visibleTabs[0];
            let h = firstTab ? firstTab.getBoundingClientRect().height : 24;
            scrollHeight = h;
          }
            
          let dir = (scrollUp ? 1 : -1) * Math.sign(event.deltaY);
          let bLastScrollLine = false; 
            
          if (
            gBrowser.tabContainer._animateElement.scrollbox.scrollTopMax ==
            gBrowser.tabContainer._animateElement.scrollbox.scrollTop
          ) {
            bLastScrollLine = true;
          }        
    
          if (
            !bTabWheel ||
            event.ctrlKey ||
            event.originalTarget.localName == "thumb"  ||
            event.originalTarget.localName == "slider" ||
            event.originalTarget.localName == "scrollbarbutton"
          ) {
            setTimeout(function() {
              let scrollBoxMod = scrollBoxY1 % scrollHeight;
              if (scrollBoxMod > 0) {
                if (dir == -1) {
                  scrollBoxY1 -= scrollBoxMod;
                  if (scrollBoxMod < scrollHeight && !bLastScrollLine) {
                    scrollBoxY1 -= scrollHeight;
                  }
                } else {
                  scrollBoxY1 += scrollHeight - scrollBoxMod;
                  if (scrollHeight - scrollBoxMod < scrollHeight) {
                    scrollBoxY1 += scrollHeight;
                  }
                }
              } else {
                if (dir == -1) {
                  scrollBoxY1 -= scrollHeight;
                } else {
                  scrollBoxY1 += scrollHeight;
                }
              }
              gBrowser.tabContainer._animateElement.scrollbox.scrollTo({
                top: scrollBoxY1,
                left: 0,
                behavior: "auto"
              }); 
            }, 20);
          }
    
          if (bTabWheel && !event.ctrlKey) {
            setTimeout(function() {
              if (
                event.originalTarget.localName != "slider" &&
                event.originalTarget.localName != "thumb"  &&
                event.originalTarget.localName != "scrollbarbutton"
              ) {
                gBrowser.tabContainer.advanceSelectedTab(dir, wrap);
                if (
                  gBrowser.tabContainer._firstTab == gBrowser.selectedTab ||
                  gBrowser.tabContainer._lastTab  == gBrowser.selectedTab
                ) {
                  gBrowser.selectedTab.scrollIntoView(); 
                }
              }    
            }, 50);
          }
        },
        false
      );
    
      //-------------------------------------------------------------------------------------------
      // Drag & Drop – Multirow-fähig, mit Emoji-Einfüge-Marker
      //-------------------------------------------------------------------------------------------
    
      // Einfüge-Markierung vorbereiten: Attribut "dnd-marker" statt Border
      if (!gBrowser.tabContainer.clearDropIndicator) {
        gBrowser.tabContainer.clearDropIndicator = function() {
          for (let tab of this.allTabs) {
            tab.removeAttribute("dnd-marker");
          }
        };
    
        gBrowser.tabContainer.addEventListener(
          "dragleave",
          function () {
            this.clearDropIndicator();
          },
          true
        );
      }
    
      // _getDropIndex: ermittelt die Zielposition für den Drop
      gBrowser.tabContainer._getDropIndex = function(event) {
        let tabToDropAt = getTabFromEventTarget(event, false);
    
        if (tabToDropAt?.localName == "tab-group") {
          tabToDropAt = tabToDropAt.previousSibling;
          if (!tabToDropAt) {
            tabToDropAt = gBrowser.visibleTabs[0];
          }
        }
    
        if (!tabToDropAt) {
          tabToDropAt =
            gBrowser.visibleTabs[gBrowser.visibleTabs.length - 1];
        }
    
        const tabPos = gBrowser.tabContainer.getIndexOfItem(tabToDropAt);
    
        if (window.getComputedStyle(this).direction == "ltr") {
          let rect = tabToDropAt.getBoundingClientRect();
          if (event.clientX < rect.x + rect.width / 2) {
            return tabPos;
          }
          return tabPos + 1;
        }
    
        let rect = tabToDropAt.getBoundingClientRect();
        if (event.clientX > rect.x + rect.width / 2) {
          return tabPos;
        }
        return tabPos + 1;
      };
    
      let listenersActive = false;
    
      gBrowser.tabContainer.addEventListener("dragstart", () => {
        gBrowser.visibleTabs.forEach(t => (t.style.transform = ""));
    
        if (!listenersActive) {
          gBrowser.tabContainer.getDropEffectForTabDrag = function() {};
          gBrowser.tabContainer._getDropEffectForTabDrag = function() {};
    
          gBrowser.tabContainer.on_dragover  = dragoverEvent => performTabDragOver(dragoverEvent);
          gBrowser.tabContainer._onDragOver  = dragoverEvent => performTabDragOver(dragoverEvent);
          gBrowser.tabContainer.ondrop       = dropEvent    => performTabDropEvent(dropEvent);
    
          listenersActive = true;
        }
      });
    } // Ende MultiRowTabs()
    
    // -----------------------------------------------------------------------------
    // Globale Hilfsfunktionen für Drag&Drop (mit Emoji-Einfüge-Marker)
    // -----------------------------------------------------------------------------
    
    var lastKnownIndex = null;
    var lastGroupStart = null;
    var lastGroupEnd   = null;
    
    function getTabFromEventTarget(event, ignoreTabSides = false) {
      let { target } = event;
      if (target.nodeType != Node.ELEMENT_NODE) {
        target = target.parentElement;
      }
      let tab =
        target?.closest("tab") || target?.closest("tab-group");
      const selectedTab = gBrowser.selectedTab;
    
      if (tab && ignoreTabSides) {
        let { width, height } = tab.getBoundingClientRect();
        if (
          event.screenX < tab.screenX + width * 0.25 ||
          event.screenX > tab.screenX + width * 0.75 ||
          ((event.screenY < tab.screenY + height * 0.25 ||
            event.screenY > tab.screenY + height * 0.25) &&
            gBrowser.tabContainer.verticalMode)
        ) {
          return selectedTab;
        }
      }
      return tab;
    }
    
    function performTabDragOver(event) {
      event.preventDefault();
      event.stopPropagation();
    
      let tc  = gBrowser.tabContainer;
      let ind = tc._tabDropIndicator;
    
      // Alte Marker entfernen
      if (tc.clearDropIndicator) {
        tc.clearDropIndicator();
      }
    
      let effects = orig_getDropEffectForTabDrag(event);
      let tab;
    
      // Link-Drop (Links auf Tabs ziehen) – nur Auswahl, kein Marker
      if (effects == "link") {
        tab = getTabFromEventTarget(event, true);
        if (tab) {
          if (!tc._dragTime) {
            tc._dragTime = Date.now();
          }
          if (
            !tab.hasAttribute("pendingicon") &&
            Date.now() >= tc._dragTime + tc._dragOverDelay
          ) {
            tc.selectedItem = tab;
          }
          if (ind) {
            ind.hidden = true;
          }
          return;
        }
      }
    
      if (!tab) {
        tab = getTabFromEventTarget(event, false);
      }
    
      let newIndex = tc._getDropIndex(event);
      if (newIndex == null) {
        return;
      }
    
      // eingebauten Indikator verstecken
      if (ind) {
        ind.hidden = true;
      }
    
      let tabs = gBrowser.tabs;
    
      // Am Ende der Tab-Leiste: Marker "right" am letzten Tab
      if (newIndex == tabs.length) {
        let lastTab = tabs[newIndex - 1];
        if (lastTab) {
          lastTab.setAttribute("dnd-marker", "right");
        }
      } else {
        // Sonst: Marker "left" am Tab an der Drop-Position
        let targetTab = tabs[newIndex];
        if (targetTab) {
          targetTab.setAttribute("dnd-marker", "left");
        }
      }
    }
    
    function performTabDropEvent(event) {
      let newIndex;
      let dt         = event.dataTransfer;
      let dropEffect = dt.dropEffect;
      let draggedTab;
    
      if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) {
        draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
        if (!draggedTab) {
          return;
        }
      }
    
      if (
        draggedTab &&
        dropEffect != "copy" &&
        draggedTab.container == gBrowser.tabContainer
      ) {
        newIndex = gBrowser.tabContainer._getDropIndex(event);
    
        let selectedTabs =
          gBrowser.selectedTabs.length > 1
            ? gBrowser.selectedTabs
            : [draggedTab];
        let tabToMoveAt = gBrowser.tabContainer.getItemAtIndex(newIndex);
        let tab         = getTabFromEventTarget(event, false);
        let tabgroup    = tab?.closest("tab-group");
    
        if (!tab) {
          newIndex = gBrowser.tabs.length;
          tabToMoveAt = null;
        }
    
        if (tabgroup && !tab.previousSibling) {
          newIndex = 0;
          selectedTabs.forEach(t => {
            gBrowser.moveTabTo(t, {
              tabIndex: newIndex++,
              forceUngrouped: true
            });
          });
        } else if (
          !tab ||
          (!tabgroup && !tabToMoveAt?.group) ||
          (tabgroup && tabToMoveAt?.group)
        ) {
          selectedTabs.forEach(t => {
            gBrowser.moveTabBefore(t, tabToMoveAt);
          });
        } else {
          tabToMoveAt = gBrowser.tabContainer.getItemAtIndex(newIndex - 1);
          selectedTabs.forEach(t => {
            gBrowser.moveTabAfter(t, tabToMoveAt);
          });
        }
    
        lastKnownIndex = null;
        lastGroupStart = null;
        lastGroupEnd   = null;
      }
    
      // Marker nach dem Drop entfernen
      if (gBrowser.tabContainer.clearDropIndicator) {
        gBrowser.tabContainer.clearDropIndicator();
      }
    }
    
    function orig_getDropEffectForTabDrag(event) {
      let dt = event.dataTransfer;
    
      let isMovingTabs = dt.mozItemCount > 0;
      for (let i = 0; i < dt.mozItemCount; i++) {
        let types = dt.mozTypesAt(0);
        if (types[0] != TAB_DROP_TYPE) {
          isMovingTabs = false;
          break;
        }
      }
    
      if (isMovingTabs) {
        let sourceNode = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
        if (
          XULElement.isInstance(sourceNode) &&
          sourceNode.localName == "tab" &&
          sourceNode.documentGlobal.isChromeWindow &&
          sourceNode.ownerDocument.documentElement.getAttribute("windowtype") ==
            "navigator:browser" &&
          sourceNode.documentGlobal.gBrowser.tabContainer == sourceNode.container
        ) {
          if (
            PrivateBrowsingUtils.isWindowPrivate(window) !=
            PrivateBrowsingUtils.isWindowPrivate(sourceNode.documentGlobal)
          ) {
            return "none";
          }
    
          if (
            window.gMultiProcessBrowser !=
            sourceNode.documentGlobal.gMultiProcessBrowser
          ) {
            return "none";
          }
    
          if (window.gFissionBrowser != sourceNode.documentGlobal.gFissionBrowser) {
            return "none";
          }
    
          return dt.dropEffect == "copy" ? "copy" : "move";
        }
      }
    
      if (Services.droppedLinkHandler.canDropLink(event, true)) {
        return "link";
      }
    
      return "none";
    }
    Alles anzeigen
  • Mehrzeilige Tableiste für aktuelle Firefox-Versionen

    • FuchsFan
    • 23. Mai 2026 um 17:12
    Zitat von lenny2

    Das Problem wurde gelöst, indem im Skript alle Vorkommen von ownerGlobal durch documentGlobal ersetzt wurden.

    Sehr schön, das werde ich auch gleich mal ändern. Im Moment ist das ab 152 die erste Anlaufstelle, in der Regel funktioniert es. Danke!:)

  • newtabfromhistory.uc.js = Fehlermeldung

    • FuchsFan
    • 23. Mai 2026 um 09:37
    Zitat von lenny2

    Alle Skripte newtabfromhistory.uc.js ist komplett inkompatibel mit v152, und Links aus den Favoriten lassen sich nicht mehr öffnen.

    Ich kann es nicht prüfen, weil ich nicht genau sagen kann, was das Script macht. Aber bitte mal testen, eventuell ist ja der Fehler hiermit behoben.

    JavaScript
    // ==UserScript==
    // @name           newTabFromHistory.uc.js
    // @namespace      https://www.camp-firefox.de/forum/viewtopic.php?p=1090093#p1090093
    // @description    Links aus Chronik in neuem Tab öffnen
    // @author         aborix
    // @Source         https://www.camp-firefox.de/forum/thema/138013/?postID=1251376#post1251376
    // @Source_new     https://www.camp-firefox.de/forum/thema/139502/?postID=1273989#post1273989       
    // @compatibility  139+
    // @version        0.0.5 date 2025.06.18
    // ==/UserScript==
    
    (function() {
      if (location.href !== 'chrome://browser/content/browser.xhtml')
        return;
    
      PlacesUIUtils.openNodeWithEvent = function PUIU_openNodeWithEvent(aNode, aEvent) {
        let window = aEvent.target.documentGlobal;
        let browserWindow = (window && window.document.documentElement.getAttribute('windowtype') == 'navigator:browser') ? window : BrowserWindowTracker.getTopWindow();
        let where = window.BrowserUtils.whereToOpenLink(aEvent, false, true);
        if (this.loadBookmarksInTabs) {
          if (where == 'current' && !aNode.uri.startsWith('javascript:')) {
            where = 'tab';
          }
          if (where == 'tab' && browserWindow.gBrowser.selectedTab.isEmpty) {
            where = 'current';
          }
        }
        this._openNodeIn(aNode, where, window);
      }
    
      let onPopupshowing = function () {
        let historyMenu = document.getElementById('history-menu');
        if (!historyMenu._placesView) {
          new HistoryMenu(event);
          historyMenu._placesView._onCommand = function HM__onCommand(aEvent) {
            let placesNode = aEvent.target._placesNode;
            if (placesNode) {
              PlacesUIUtils.openNodeWithEvent(placesNode, aEvent);
            }
          }
        }
      }
    
      let historyPopup = document.getElementById('historyMenuPopup');
      historyPopup?.addEventListener('popupshowing', onPopupshowing);
    
    })();
    Alles anzeigen
  • Anzeige unter about:addons in Nightly verändert

    • FuchsFan
    • 22. Mai 2026 um 19:21
    Zitat von Boersenfeger

    Oh, ich sehe gerade, das bei Themes die Nummerierung weg ist. Kann das geheilt werden?

    Der ganze rechte Bereich Themes muss in deinem Code angepasst werden.=O

  • Anzeige unter about:addons in Nightly verändert

    • FuchsFan
    • 22. Mai 2026 um 18:00
    Zitat von Boersenfeger

    Der Code in beiden Browsern ist identisch. Was ist nicht mehr kompatibel?

    Wie auch bei about:preferences sehr viel verändert, und nach meinem Empfinden immer komplizierter das anzupassen. Nur mit diesem Code sehen dann die Button hier so aus (erster Test). Eventuell kannst du es verwenden.

    CSS
    #sidebar categories-box moz-page-nav moz-page-nav-button:not([selected]) {
      --page-nav-button-text-color-hover: red !important;
      --page-nav-button-background-color-hover: yellow !important;
      --page-nav-button-border-color-hover: blue !important;
      --page-nav-button-background-color: beige !important;
      border-top: 2px solid grey !important;
      border-bottom: 2px solid grey !important;
      border-left: 2px solid grey !important;
    }
    
    #sidebar categories-box moz-page-nav moz-page-nav-button {
      --page-nav-button-background-color-selected: #7DB040 !important; 
      --color-accent-primary: white !important;
    }
    Alles anzeigen
  • Profilmanager

    • FuchsFan
    • 21. Mai 2026 um 10:34
    Zitat von Mira_Belle

    Mist, kannst Du mir den noch einmal erklären,
    oder darauf verlinken, wenn es schon eine Erklärung hier im Board gibt?
    Ich komme gerade nicht darauf, was genau das für ein Test war.

    Das Script besteht nicht den Elchtest, dass heißt, im ersten Fenster wird das Script bedient, dann wird das Fenster geschlossen. Jetzt soll das Script auch in den weiteren geöffneten Fenstern funktionieren, aber das macht es nicht.

  • Profilmanager

    • FuchsFan
    • 21. Mai 2026 um 09:46
    Zitat von Mira_Belle

    Mag jemand testen?

    Mira_Belle

    Getestet aus portable Nightly 153, funktioniert alles wie gewünscht. Nur als Hinweis, bei den installierten reicht es vollkommen aus, wenn nur der Name des Profiles angegeben wird. Aus installierter Beta/Nightly kann ich nicht testen, weil nicht vorhanden. Ein Nachteil deines Scriptes ist der, dass es den Elchtest nicht besteht.

  • FF 151 startet immer mit Popup "Firefox-Profi wählen"

    • FuchsFan
    • 21. Mai 2026 um 09:17
    Zitat von Sören Hentzschel

    Wenn es um die neue Profilverwaltung geht, gibt es keinen Grund, das Profilsystem als Ganzes abzuschalten (und damit ggf. Profile zu verlieren). Dann öffnet man einfach Menü → Profile → Profile verwalten. Und dort deaktiviert man dann die Checkbox „Ein Profil wählen, wenn Firefox geöffnet wird”.

    Ich bedanke mich auch, obwohl ich die Profilverwaltung nutze, darauf bin ich noch nie gestoßen.

  • FF 151 startet immer mit Popup "Firefox-Profi wählen"

    • FuchsFan
    • 20. Mai 2026 um 21:51

    Ich gehe mal davon aus, dass bei dir jetzt die neue Profilauswahl aktiviert ist. Wenn du das abstellen möchtest, so gib in die Adressleiste about:config ein, bestätige die Warnung, und gib oben in die Leiste browser.profiles.enabled ein, wenn auf true dann auf false setzen. Firefox Neustart, dann sollte es wieder ohne die Auswahl starten.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:39
    Zitat von milupo

    Außerdem wird offensichtlich eine Klasse für alle Symbole verwendet, sodass man etwas tricksen muss

    Ja, damit .page-nav-icon kannst du alle auf einmal farblich anpassen, das geht. Jetzt daraus aber einzeln ein Icon anzusprechen scheitert immer wieder, finde keine Weg dafür. Wenn ich mal viel Mut habe, dann baue ich eventuell eigene Icons ein, jetzt lasse ich es erst einmal so.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:13
    Zitat von grisu2099

    Die habe ich in der alten Version durch eigene Icons ersetzt.

    Das habe ich auch getestet, funktioniert jetzt im Nightly auch, aber 17 Button, das wollte ich mir ersparen.;)

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:07
    Zitat von grisu2099

    Welche meinst du genau?

    Links bei den Button (Home, usw.)

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 19:06
    Zitat von grisu2099

    (Habe bis vorhin noch Anpassungen an der "alten" Ansicht probiert... ;) )

    Hast du mal probiert die Farbe der Icons einzeln anzupassen? Ich habe schon mal mit Andreas probiert, und jetzt habe ich wiederholt Anlauf genommen, nichts zu machen.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 12:43
    Zitat von Sören Hentzschel

    Wer dann?

    Das frage ich mich auch. ;) Mal im Ernst, wie sollte ich darauf kommen?:/

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 12:33
    Zitat von Sören Hentzschel

    Bei Screenshot 1 steht browser.settings-redesign.enabled auf true, bei Screenshot 2 auf false.

    Dankeschön, das war die Ursache. Nun steht natürlich die Frage im Raum, warum in dieser Version true, und in der anderen false, denn ich habe nicht daran geschraubt.

  • Menü Einstellungen

    • FuchsFan
    • 20. Mai 2026 um 11:24
    Zitat von 2002Andreas

    Evtl. kann Sören ja etwas dazu sagen, ob die Ansicht noch nicht für alle Nutzer erstellt wurde.

    Also, ich habe auch in der unberührten Version (meine Reserve Portable) versucht, keine Veränderung, immer Bild 2.

Unterstütze uns!

Jährlich (2026)

69,4 %

69,4% (538,17 von 775 EUR)

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