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

Beiträge von Stoiker

  • Problem mit *.js-Code für Tab-Kontextmenü

    • Stoiker
    • 31. Juli 2021 um 13:25

    Gebrauchsfähiger Zustand ist wiederhergestellt:

    Ich habe ein wenig herumexperimentiert, ein- und wieder auskommentiert und es tut erstmal wieder.

    Danke dir Andreas :thumbup:

    milupo

    Natürlich ich. Aber nur aus Notwehr 8o

  • Problem mit *.js-Code für Tab-Kontextmenü

    • Stoiker
    • 30. Juli 2021 um 16:46

    Mit dem Skript sieht es jetzt so aus:

    Sieht schon besser aus, der Eintrag ist jetzt da. Wo allerdings der Eintrag "Tabs stummschalten" plötzlich herkommt muss ich erkunden.

    Danke dir

  • Problem mit *.js-Code für Tab-Kontextmenü

    • Stoiker
    • 30. Juli 2021 um 16:29

    Danke für die Rückmeldung.

    Das von dir modifizierte Skript ändert hier erstmal nix. Sieht im Kontextmenü aus wie vorher.

    Damned, darf ich jetzt doch den ganzen *.css-Kram durchforsten und auf Fehlersuche gehen? :rolleyes:

  • Problem mit *.js-Code für Tab-Kontextmenü

    • Stoiker
    • 30. Juli 2021 um 16:02

    Hallo

    Mir fehlt im Kontextmenü der Tabs der Eintrag "Tabs als LZ hinzufügen".

    Folgenden Code konnte ich ausmachen der zumindest mitverantwortlich dafür ist:

    Code
    // TabContextCloseAllTabs.uc.js
    
    (function() {
    
      if (location != 'chrome://browser/content/browser.xhtml')
        return;
    
      let menuitem = document.createXULElement('menuitem');
      menuitem.id = 'context_closeLeftTabs';
      menuitem.setAttribute('label', 'Linke Tabs schließen');
      menuitem.setAttribute('oncommand',
        'for (let i = TabContextMenu.contextTab._tPos - 1; i >= 0; i--) \
           gBrowser.removeTab(gBrowser.tabs[i], {animate: true})');
    
      let tabContextMenu = document.getElementById('tabContextMenu');
      let refItem = document.getElementById('context_undoCloseTab');
      tabContextMenu.insertBefore(menuitem, refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheEnd'), refItem);
      tabContextMenu.insertBefore(document.getElementById('context_closeOtherTabs'), refItem);
      tabContextMenu.removeChild(document.getElementById('context_closeTabOptions'));
    
    })();
    
    // TabContextCloseAllTabs.uc.js
    
    (function() {
       if (location != 'chrome://browser/content/browser.xhtml')
         return;
       var closeAllTabsItem = document.createXULElement('menuitem');
       closeAllTabsItem.id = 'context_closeAllTabs';
       closeAllTabsItem.setAttribute('label', 'Alle Tabs schließen');
       closeAllTabsItem.setAttribute('oncommand', 
         'for (let tab of gBrowser.visibleTabs) gBrowser.removeTab(tab)');
       var refItem = document.getElementById('context_closeOtherTabs');
       refItem.parentNode.insertBefore(closeAllTabsItem, refItem.nextSibling);
    })();
    Alles anzeigen

    Ist der Code aktiv sieht mein Kontextmenü so aus:

    Deaktiviere ich ihn, so:

    Da sind natürlich noch eine Reihe von *.css am werkeln, aber der Code lässt den Eintrag überhaupt erscheinen o. verschwinden.

    Meine Frage nun: gibt der Quellcode eine Info her warum das so ist oder muss ich alle *.css durchforsten?

  • Ordner in Firefox, Frage

    • Stoiker
    • 27. Juli 2021 um 00:35
    Zitat von 2002Andreas
    Zitat von milupo

    jeder kann es letztendlich machen, wie er es möchte.

    Ich kann natürlich mal eine Umfrage hier im Forum starten, ob es noch mehr user gibt die sich an meiner Art Codes zu geben stören.

    Denn wenn dem dann so ist, dann verzichte ich in Zukunft darauf.

    Ich möchte auf keinen Fall, dass dadurch evtl. ein schlechtes Licht auf das Forum geworfen wird.

    Ich stör' mich nicht dran ;)

    Und sage es gern auch mal hier: -Danke-!

    Du und schlechtes Licht ... pfff

    Da geben sich andere Mühe 8)

  • Freier Datenschutz-Mod für den Firefox-Browser

    • Stoiker
    • 2. Juli 2021 um 10:50

    Das Projekt hat einen neuen Namen und firmiert nun unter LibreWolf

    3, 2, 1 ...

  • Vollständige Suchleiste

    • Stoiker
    • 22. Juni 2021 um 19:19
    Zitat von Boersenfeger

    Na, dann kann man sich weitere Unterstützung zur Anpassung deines Fuchses also schenken?

    Wieso?

    Ich bin bei Version 87 aus- und bei 89 wieder eingestiegen. Und das nur dank der Hilfe des Forums. Ich musste Gott sei Dank dieses Mal relativ wenig nachfragen, weil ich mich der Antworten etlicher Threads bedienen konnte, wo Leute ähnliche Lösungen gesucht hatten.

    Nun isser in 'nem Zustand der gern lange Zeit so bleiben darf.

    Ich habe sehr viel Zeit in lesen, testen und mit modifizieren verbracht. Jetzt ist das Zeitbudget für Anpassungen vorerst aufgebraucht. Wenn wieder was kaputt aktualisiert wurde, melde ich mich bestimmt wieder ;)

    Zitat von Boersenfeger

    ... und wieso hipsterigen Update?

    Ich hatte das Wort noch übrig :D

    Es ist ja kein Geheimnis was ich von diesem Rapid Release-Zirkus halte

  • Vollständige Suchleiste

    • Stoiker
    • 22. Juni 2021 um 15:04

    Oder so ^^

    Ich habe die Beschäftigung mit dem Gedöns schon wieder eingestellt. Momentan funktioniert der Fux halbwegs so wie ich es mir vorstelle.

    Bis halt zum nächsten hipsterigen Update

  • Vollständige Suchleiste

    • Stoiker
    • 22. Juni 2021 um 14:45

    Danke für den Hinweis.

    Ich meine, es könnte sogar dieses Skript sein welches in einer der zahlreichen *.css drinnen steht.

  • Was ist incoming.telemetry.mozilla.org?

    • Stoiker
    • 22. Juni 2021 um 14:43

    Die Zur Verfügung Stellung der Daten ist freiwillig und man kann das deaktivieren :)

    Dann haste Ruhe

  • Hamburger Menü: Pfad zu Chronikeinträgen

    • Stoiker
    • 12. Juni 2021 um 13:23

    Danke für die Anregungen.

    Nicht ohne Grund hatte ich aber nach dem Punkt im Hamburger Menü gefragt. Die Idee mit dem Eintrag im Tab-Kontextmenü hatte ich vor langer Zeit mal getestet aber wegen der eher seltenen Anwendung dann wieder verworfen. Das Kontextmenü ist auf die Einträge eingedampft die hier oft und häufig zum Einsatz kommen.

    Es bleibt die Frage, ist es möglich den "Weg" zu reduzieren oder muss ich mich umgewöhnen?

  • Hamburger Menü: Pfad zu Chronikeinträgen

    • Stoiker
    • 12. Juni 2021 um 10:53

    Hallo

    Sorry für den komisch klingenden und nicht wirklich suchfreundlichen Threadtitel.

    Während der Neueinrichtung hatte ich neulich einen Beitrag von Boersenfeger gesehen, finde den jetzt aber nicht mehr.

    Er fragte dort, meine ich mich zu erinnern, ob es möglich ist die Pfade zu Einträgen der Chronik zu verringern.

    Seit V. 89 (vllt. auch schon 88) ist es so: Hamburger Menü (oben rechts idR) -> Chronik -> Kürzlich geschlossene Tabs (bzw. Fenster) -> und erst dann sehe ich die Einträge. Das war vorher einfacher.

    Oder als Bildstrecke:

    -> -> ->

    Kann man die Einträge wieder eine Ebene nach "oben" holen, also statt vier Klicks, nur drei um eine Auswahl treffen zu können?

  • Werbung in Facebook Videos blockieren - gibt es da eine Lösung?

    • Stoiker
    • 12. Juni 2021 um 10:35

    Danke auch von mir bzgl. Erklärung der Lowe-Liste

  • Werbung in Facebook Videos blockieren - gibt es da eine Lösung?

    • Stoiker
    • 9. Juni 2021 um 21:02
    Zitat von .DeJaVu

    Peter Lowe deaktivieren

    Aus Neugier: warum sollte die nicht genutzt werden?

  • Mozilla veröffentlicht Firefox 89 mit neuem Proton-Design

    • Stoiker
    • 6. Juni 2021 um 10:05
    Zitat von gumbl

    der kleine Pfeil im Kontextmenü für an Seitenanfang

    nach oben, und vielleicht nach unten

    Alternativ zu aborix' Empfehlung wäre eine Erweiterung für Mausgesten. Ich steuere das durch einen angedeuteten Pfeil nach oben bzw. unten mit der rechten Maustaste.

  • Tab Leiste unter der Lesezeichen Leiste

    • Stoiker
    • 5. Juni 2021 um 23:28

    Ich habs nochmal probiert, jetzt geht es.

    Danke.

  • Tab Leiste unter der Lesezeichen Leiste

    • Stoiker
    • 5. Juni 2021 um 15:15

    Danke für den Hinweis. Ich habe mal schnell drei von den sechs getestet und keines hatte eine Funktion :/

  • Vollständige Suchleiste

    • Stoiker
    • 5. Juni 2021 um 14:57

    Danke für den Hinweis. Einen expliziten Code zum löschen habe ich nicht, ich mach das manuell. Aber jetzt wo du es sagst, ich nutze ja tatsächlich ein Restartskript ... vielleicht merke ich mir das endlich mal

  • Vollständige Suchleiste

    • Stoiker
    • 5. Juni 2021 um 14:36

    Ich hab keine Ahnung woran es lag, das Skript funktioniert wieder bzw. weiterhin

  • Tab Leiste unter der Lesezeichen Leiste

    • Stoiker
    • 5. Juni 2021 um 14:34

    Hallo

    Ich hatte auch große Probleme eine der zahlreichen *.css die gerade kursieren, um die Tableiste unter die Lesezeichenleiste zu verschieben, ans laufen zu bekommen.

    Meine Lösung ist kein Eintrag in der "userChrome.css" sondern ein Skript:

    CSS
    // ==UserScript==
    // @name           zzzz-MultiRowTab_LiteforFx48.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    Experimentelle CSS Version für Mehrzeilige Tableiste
    // @include        main
    // @compatibility  Firefox 81
    // @author         Alice0775
    // @version        2016/08/05 00:00 Firefox 48
    // @version        2016/05/01 00:01 hide favicon if busy
    // @version        2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+
    // @version        2016/02/09 00:01 workaround css for lwt
    // @version        2016/02/09 00:00
    // ==/UserScript==
    "use strict";
    MultiRowTabLiteforFx();
    function MultiRowTabLiteforFx() {
    
        /* Symbolleisten und Menüleiste von der Titelleiste in die Navigator-Toolbox verschieben */
        document.getElementById("titlebar").parentNode.insertBefore(document.getElementById("toolbar-menubar"),document.getElementById("titlebar"));
    
        var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    
        /* Symbolleiste Sortieren */
        #toolbar-menubar { -moz-box-ordinal-group: 1 !important; } /* Menüleiste */
        #nav-bar { -moz-box-ordinal-group: 2 !important; }         /* Navigationsleiste */
        #PersonalToolbar { -moz-box-ordinal-group: 3 !important; } /* Lesezeichen-Symbolleiste */
        #titlebar { -moz-box-ordinal-group: 4 !important; }        /* Titelleiste */
    
        /* Anpassung der Symbolleisten */
        [tabsintitlebar="true"] #toolbar-menubar { height: 29px; }
        [tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; }
        #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; }
    
        /* Windows 10 und Firefox Standardtheme, Fensterausenlinie in weiß. 
           Anpassung für Titelleistenschaltflächen wenn sie in den Hintergrund verschoben sind */
        #main-window:not([lwtheme="true"]) #TabsToolbar .titlebar-buttonbox .titlebar-button,
        #main-window:not([lwtheme="true"]) #window-controls toolbarbutton { color: rgb(24, 25, 26) !important; }
        #main-window:not([lwtheme="true"]) #TabsToolbar .titlebar-buttonbox .titlebar-button:not(.titlebar-close):hover,
        #main-window:not([lwtheme="true"]) #window-controls toolbarbutton:not([id="close-button"]):hover {
            background-color: var(--lwt-toolbarbutton-hover-background, hsla(0,0%,70%,.4)) !important; }
    
        /* Anpassung für Titelleistenschaltflächen */
        [tabsintitlebar="true"] .titlebar-buttonbox-container { display: block; position: fixed; right:0; }
        [tabsintitlebar="true"][sizemode="normal"] .titlebar-buttonbox-container { top: 1px; }
        [tabsintitlebar="true"][sizemode="maximized"] .titlebar-buttonbox-container { top: 8px; }
        #navigator-toolbox:not([style^="margin-top:"])[style=""][inFullscreen="true"] #window-controls { display: flex; position: fixed; top: 0; right:0; }
        #navigator-toolbox:not([style^="margin-top:"])[style=""][inFullscreen="true"] #window-controls > toolbarbutton { display: inline; max-height: var(--tab-min-height); }
    
        /* auf der rechten Seite Platz für die Schaltflächen der Titelleiste einfügen, damit die    
           Schaltflächen der Titelleiste und der Navigationsleiste nicht verdeckt werden */
        [tabsintitlebar="true"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #nav-bar:not([inFullscreen="true"]) { padding-right: 139px !important; }
        #navigator-toolbox[inFullscreen="true"] #nav-bar { padding-right: 109px !important; }
    
        /* Mehrzeilige Tableiste */
        box[class="scrollbox-clip"][orient="horizontal"],
        tabs > arrowscrollbox { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap;
            max-height: calc(var(--tab-min-height) * 5); /* Anzahl der Tabzeilen(Standard = 5 Zeilen) */
            overflow-x: hidden;
            overflow-y: auto; }
        tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
        tabs tab,.tab-background {
            height: var(--tab-min-height);
            overflow: hidden; }
        #main-window[proton] tabs tab,
        #main-window[proton] .tab-background {
            min-height: var(--tab-min-height);
            margin: 0 !important;
            padding: 0 !important; }
        tab > .tab-stack { width: 100%; }
        #main-window[proton] .tab-background[style$="2px solid red !important;"] { border-radius: 0 !important; }
        #tabs-newtab-button { margin: 0 !important; }
    
        /* Bei Überschreitung der angegebenen Zeilenanzahl, mit der Maus,    
           über die dann eingeblendetet Scrolleiste zur gewünschten Zeile wechseln */
        scrollbox[part][orient="horizontal"] > scrollbar { -moz-window-dragging: no-drag; }
    
        /* Drag-Bereich auf der linken und rechten Seite der
           Tab-Leiste ausblenden - verstecken
           Links und rechts → hbox.titlebar-spacer 
           links → hbox.titlebar-spacer[type="pre-tabs"] 
           rechts → hbox.titlebar-spacer[type="post-tabs"] */
        hbox.titlebar-spacer
        ,
        /* Ausblenden - Verstecken */
        tabs tab:not([fadein]),#scrollbutton-up,#scrollbutton-down,
        #toolbar-menubar[autohide="false"] + #titlebar #TabsToolbar .titlebar-buttonbox-container { display: none; }
    
        } `;
        var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
        sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
        gBrowser.tabContainer.clearDropIndicator = function() {
            let tabs = this.allTabs;
            for (let i = 0, len = tabs.length; i < len; i++) {
                tabs[i].removeAttribute("style");
                tabs[i].querySelector(".tab-background").removeAttribute("style");
            }
        }
        gBrowser.tabContainer.addEventListener("dragleave", function(event) { this.clearDropIndicator(event); }, true);
    
        gBrowser.tabContainer.on_dragover = function(event) {
            this.clearDropIndicator();
            var effects = this._getDropEffectForTabDrag(event);
    
            var ind = this._tabDropIndicator;
            if (effects == "" || effects == "none") {
                ind.hidden = true;
                return;
            }
            event.preventDefault();
            event.stopPropagation();
    
            var arrowScrollbox = this.arrowScrollbox;
    
            // autoscroll the tab strip if we drag over the scroll
            // buttons, even if we aren't dragging a tab, but then
            // return to avoid drawing the drop indicator
            var pixelsToScroll = 0;
            if (this.getAttribute("overflow") == "true") {
                switch (event.originalTarget) {
                    case arrowScrollbox._scrollButtonUp:
                        pixelsToScroll = arrowScrollbox.scrollIncrement * -1;
                        break;
                    case arrowScrollbox._scrollButtonDown:
                        pixelsToScroll = arrowScrollbox.scrollIncrement;
                        break;
                }
                if (pixelsToScroll) {
                    arrowScrollbox.scrollByPixels(
                        (RTL_UI ? -1 : 1) * pixelsToScroll,
                        true
                    );
                }
            }
    
            // let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
            let draggedTab = this._getDropIndex(event, false);
            if (
                (effects == "move" || effects == "copy") &&
                this == draggedTab.container
            ) {
                ind.hidden = true;
    
                if (!this._isGroupTabsAnimationOver()) {
                    // Wait for grouping tabs animation to finish
                    return;
                }
                this._finishGroupSelectedTabs(draggedTab);
    
                if (effects == "move") {
                    this._animateTabMove(event);
                    return;
                }
            }
    
            this._finishAnimateTabMove();
    
            if (effects == "link") {
                let tab = this._getDragTargetTab(event, true);
                if (tab) {
                    if (!this._dragTime) {
                        this._dragTime = Date.now();
                    }
                    if (Date.now() >= this._dragTime + this._dragOverDelay) {
                        this.selectedItem = tab;
                    }
                    ind.hidden = true;
                    return;
                }
            }
    
            var rect = arrowScrollbox.getBoundingClientRect();
            var newMargin;
            if (pixelsToScroll) {
                // if we are scrolling, put the drop indicator at the edge
                // so that it doesn't jump while scrolling
                let scrollRect = arrowScrollbox.scrollClientRect;
                let minMargin = scrollRect.left - rect.left;
                let maxMargin = Math.min(
                    minMargin + scrollRect.width,
                    scrollRect.right
                );
                if (RTL_UI) {
                    [minMargin, maxMargin] = [
                        this.clientWidth - maxMargin,
                        this.clientWidth - minMargin,
                    ];
                }
                newMargin = pixelsToScroll > 0 ? maxMargin : minMargin;
            } else {
                let newIndex = this._getDropIndex(event, effects == "link");
                let children = this.allTabs;
                if (newIndex == children.length) {
                    // let tabRect = children[newIndex - 1].getBoundingClientRect();
                    let tabRect = children[newIndex - 1].querySelector(".tab-background").style.setProperty("border-right","2px solid red","important");
                    if (RTL_UI) {
                        newMargin = rect.right - tabRect.left;
                    } else {
                        newMargin = tabRect.right - rect.left;
                    }
                } else {
                    // let tabRect = children[newIndex].getBoundingClientRect();
                    let tabRect = children[newIndex].querySelector(".tab-background").style.setProperty("border-left","2px solid red","important");
                    if (RTL_UI) {
                        newMargin = rect.right - tabRect.right;
                    } else {
                        newMargin = tabRect.left - rect.left;
                    }
                }
            }
    
            ind.hidden = false;
            newMargin += ind.clientWidth / 2;
            if (RTL_UI) {
                newMargin *= -1;
            }
            ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
        }
    
        gBrowser.tabContainer.on_drop = function(event) {
            this.clearDropIndicator();
            var dt = event.dataTransfer;
            var dropEffect = dt.dropEffect;
            var draggedTab;
            let movingTabs;
            if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) {
                // tab copy or move
                draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
                // not our drop then
                if (!draggedTab) {
                    return;
                }
                movingTabs = draggedTab._dragData.movingTabs;
                draggedTab.container._finishGroupSelectedTabs(draggedTab);
            }
            this._tabDropIndicator.hidden = true;
            event.stopPropagation();
            if (draggedTab && dropEffect == "copy") {
                // copy the dropped tab (wherever it's from)
                let newIndex = this._getDropIndex(event, false);
                let draggedTabCopy;
                for (let tab of movingTabs) {
                    let newTab = gBrowser.duplicateTab(tab);
                    gBrowser.moveTabTo(newTab, newIndex++);
                    if (tab == draggedTab) {
                        draggedTabCopy = newTab;
                    }
                }
                if (draggedTab.container != this || event.shiftKey) {
                    this.selectedItem = draggedTabCopy;
                }
            } else if (draggedTab && draggedTab.container == this) {
                let oldTranslateX = Math.round(draggedTab._dragData.translateX);
                let tabWidth = Math.round(draggedTab._dragData.tabWidth);
                let translateOffset = oldTranslateX % tabWidth;
                let newTranslateX = oldTranslateX - translateOffset;
                if (oldTranslateX > 0 && translateOffset > tabWidth / 2) {
                    newTranslateX += tabWidth;
                } else if (oldTranslateX < 0 && -translateOffset > tabWidth / 2) {
                    newTranslateX -= tabWidth;
                }
                let dropIndex = this._getDropIndex(event, false);
                //  "animDropIndex" in draggedTab._dragData &&
                //  draggedTab._dragData.animDropIndex;
                let incrementDropIndex = true;
                if (dropIndex && dropIndex > movingTabs[0]._tPos) {
                    dropIndex--;
                    incrementDropIndex = false;
                }
                if (oldTranslateX && oldTranslateX != newTranslateX && !gReduceMotion) {
                    for (let tab of movingTabs) {
                        tab.setAttribute("tabdrop-samewindow", "true");
                        tab.style.transform = "translateX(" + newTranslateX + "px)";
                        let onTransitionEnd = transitionendEvent => {
                            if (
                                transitionendEvent.propertyName != "transform" ||
                                transitionendEvent.originalTarget != tab
                            ) {
                                return;
                            }
                            tab.removeEventListener("transitionend", onTransitionEnd);
                            tab.removeAttribute("tabdrop-samewindow");
                            this._finishAnimateTabMove();
                            if (dropIndex !== false) {
                                gBrowser.moveTabTo(tab, dropIndex);
                                if (incrementDropIndex) {
                                    dropIndex++;
                                }
                            }
                            gBrowser.syncThrobberAnimations(tab);
                        };
                        tab.addEventListener("transitionend", onTransitionEnd);
                    }
                } else {
                    this._finishAnimateTabMove();
                    if (dropIndex !== false) {
                        for (let tab of movingTabs) {
                            gBrowser.moveTabTo(tab, dropIndex);
                            if (incrementDropIndex) {
                                dropIndex++;
                            }
                        }
                    }
                }
            } else if (draggedTab) {
                let newIndex = this._getDropIndex(event, false);
                let newTabs = [];
                for (let tab of movingTabs) {
                    let newTab = gBrowser.adoptTab(tab, newIndex++, tab == draggedTab);
                    newTabs.push(newTab);
                }
                // Restore tab selection
                gBrowser.addRangeToMultiSelectedTabs(
                    newTabs[0],
                    newTabs[newTabs.length - 1]
                );
            } else {
                // Pass true to disallow dropping javascript: or data: urls
                let links;
                try {
                    links = browserDragAndDrop.dropLinks(event, true);
                } catch (ex) {}
                if (!links || links.length === 0) {
                    return;
                }
                let inBackground = Services.prefs.getBoolPref(
                    "browser.tabs.loadInBackground"
                );
                if (event.shiftKey) {
                    inBackground = !inBackground;
                }
                let targetTab = this._getDragTargetTab(event, true);
                let userContextId = this.selectedItem.getAttribute("usercontextid");
                let replace = !!targetTab;
                let newIndex = this._getDropIndex(event, true);
                let urls = links.map(link => link.url);
                let csp = browserDragAndDrop.getCSP(event);
                let triggeringPrincipal = browserDragAndDrop.getTriggeringPrincipal(
                    event
                );
                (async () => {
                    if (
                        urls.length >=
                        Services.prefs.getIntPref("browser.tabs.maxOpenBeforeWarn")
                    ) {
                        // Sync dialog cannot be used inside drop event handler.
                        let answer = await OpenInTabsUtils.promiseConfirmOpenInTabs(
                            urls.length,
                            window
                        );
                        if (!answer) {
                            return;
                        }
                    }
                    gBrowser.loadTabs(urls, {
                        inBackground,
                        replace,
                        allowThirdPartyFixup: true,
                        targetTab,
                        newIndex,
                        userContextId,
                        triggeringPrincipal,
                        csp,
                    });
                })();
            }
            if (draggedTab) {
                delete draggedTab._dragData;
            }
        }
    
        gBrowser.tabContainer._getDropIndex = function(event, isLink) {
            var tabs = this.allTabs;
            var tab = this._getDragTargetTab(event, isLink);
            if (!RTL_UI) {
                for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) {
                    if (
                        event.screenY >
                        tabs[i].screenY &&
                        event.screenY <
                        tabs[i].screenY + tabs[i].getBoundingClientRect().height
                    ) {
                        if (
                            event.screenX >
                            tabs[i].screenX &&
                            event.screenX <
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2
                        ) {
                            return i;
                        }
                        if (
                            event.screenX >
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 &&
                            event.screenX <
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width
                        ) {
                            return i + 1;
                        }
                    }
                }
            } else {
                for (let i = tab ? tab._tPos : 0; i < tabs.length; i++) {
                    if (
                        event.screenY >
                        tabs[i].screenY &&
                        event.screenY <
                        tabs[i].screenY + tabs[i].getBoundingClientRect().height
                    ) {
                        if (
                            event.screenX <
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width &&
                            event.screenX >
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2
                        ) {
                            return i;
                        }
                        if (
                            event.screenX <
                            tabs[i].screenX + tabs[i].getBoundingClientRect().width / 2 &&
                            event.screenX >
                            tabs[i].screenX
                        ) {
                            return i + 1;
                        }
                    }
                }
            }
            return tabs.length;
        }
    
    }
    Alles anzeigen

    Die (mutmaßlich) schlechte Nachricht: ich habe dieses Skript nach den entsprechenden notwendigen Vorbereitungen in einem neuen Profil getestet. Es funktioniert zwar, aber die Tableiste sprang bei mir jedes Mal wenn ich mit "Strg + T" einen neuen Tab aufgemacht habe. In meinem Hauptprofil tritt dieses Verhalten Gott sei Dank nicht auf.

    Vielleicht ist ein/dieses Skript ja ein Ansatz der dir weiterhilft.

Unterstütze uns!

Jährlich (2025)

0 %

0% (0,00 von 650 EUR)

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