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

Beiträge von Fox2Fox

  • Videos spielen manchmal einfach nicht mehr ab

    • Fox2Fox
    • 8. Februar 2020 um 12:42

    Alternativ könntest du das machen:

    • Führe einen Test mit Firefox portable durch:

    • Portable Firefox (32 bit oder 64 bit) hier downloaden.

    • zip-Datei in beliebigen Ordner entpacken, am besten auf einen externen Datenträger.

    • Falls dieser nicht verfügbar und nur die C-Partition vorhanden ist: Den portablen Firefox (Ordner) aber NIEMALS nach

    C:\Programme oder C:\Program Files (x86) kopieren/entpacken. Daraus ergeben sich Rechte-Probleme.

    Dann am besten auf den Desktop entpacken.

    • Keine Erweiterungen hinzufügen!

    • Portable Fx ausschließlich mittels FirefoxStarter.exe starten.

    • Gegebenenfalls ein Firefox-Update auf die aktuelle Programmversion durchführen

    • Teste …

    • Portable Fx läuft einwandfrei: Fehler im lokalen Fx (Profil, Erweiterungen etc.)

    • Portable Fx hat Probleme: Fehler im System (AV-Software, Filter, Malware etc.)

  • Nach Installation von Windows 10 Tableiste zu hoch

    • Fox2Fox
    • 6. Februar 2020 um 20:36

    Klappt! Vielen Dank.

  • Nach Installation von Windows 10 Tableiste zu hoch

    • Fox2Fox
    • 6. Februar 2020 um 17:50

    Nach der Installation von Windows 10 ist die Tableiste zu hoch.

    Ist die Höhe über die von mir benutzte CSS beeinflussbar?

    CSS
        @charset "UTF-8";
    
        /* Tab-Leiste unterhalb der Symbolleiste verschieben */
        #titlebar { -moz-box-ordinal-group: 2; }
    
        /* Menü nach oben verschieben */
        #toolbar-menubar { position: fixed; display: inline-flex; }
        [sizemode="maximized"]:not([tabsintitlebar="true"]) #toolbar-menubar,
        [sizemode="normal"] #toolbar-menubar { top: 1px; }
        [sizemode="maximized"] #toolbar-menubar { top: 8px; }
    
        /* Platz für die Menüleiste oberhalb der Symbolleiste schaffen */
        #main-window[tabsintitlebar="true"] #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 29px transparent !important; }
        #main-window:not([tabsintitlebar="true"]) #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 21px transparent !important; }
    
        /* Freien Bereich für Menü und Titelleistenschaltflächen festlegen */
        [tabsintitlebar="true"] #navigator-toolbox { -moz-window-dragging: drag; }
    
        /* Titelleistenschaltfläche nach rechts oben verschieben */
        #navigator-toolbox:not([style^="margin-top:"])[style=""][inFullscreen="true"] #window-controls,
        [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 { top: 0; }
    
        /* auf der rechten Seite Platz machen, damit die Schaltflächen der Titelleiste und der 
           Navigationssymbolleiste nicht im Vollbildmodus angezeigt werden */
        #navigator-toolbox[inFullscreen="true"] #nav-bar { padding-right: 109px !important; }
    
        /*Mehrzeilige Tableiste */
        tabs > arrowscrollbox { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap; }
        tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
        tabs tab,.tab-background { height: var(--tab-min-height); }
        tab > .tab-stack { width: 100%; }
    
        /* Tableiste Linken und rechten Ziehbereich Ausblenden
           Links und rechts → hbox.titlebar-spacer 
           Nur links → hbox.titlebar-spacer[type="pre-tabs"] 
           Nur rechts → hbox.titlebar-spacer[type="post-tabs"] */
        hbox.titlebar-spacer
        ,
        /* Ausblenden */
        #alltabs-button,tabs tab:not([fadein]),
        [class="scrollbutton-up"],[class="scrollbutton-up"] ~ spacer,
        [class="scrollbutton-down"] { display: none; }
        
        #titlebar {
         margin-top: -24px !important;
        }
    Alles anzeigen
  • Videos spielen manchmal einfach nicht mehr ab

    • Fox2Fox
    • 4. Februar 2020 um 13:08

    Deine GraKa benötigt einen aktuellen Treiber:

    https://www.nvidia.de/Download/driverResults.aspx/157130/de

    Teste mit einem neuen Profil

    Sollte der Fehler mit dem neuen Profil behoben sein, kannst du wichtige Daten vom alten ins neue Profil übernehmen. Dazu später mehr.

  • Tabs unten

    • Fox2Fox
    • 26. Januar 2020 um 19:08

    Problem gelöst.

    Es wurde so entschieden, dass die Tabs oben sind. Diese seltsame blaue Fläche habe ich anders nicht wegbekommen.

    Zitat von Fox2Fox

    Wenn ich dieses script Tabs_unten.uc.js entferne, ist die Tableiste oben und alles wird korrekt dargestellt.

    Danke für eure Hilfe.

  • Tabs unten

    • Fox2Fox
    • 23. Januar 2020 um 14:00
    Zitat von milupo

    Oder hast du da nur den Inhalt einer Leiste (Lesezeichenleiste?) unkenntlich gemacht?

    So ist es.

    Vielleicht kann noch jemand etwas zum Kontextmenü sagen, denn das Menü passt ja teilweise nicht zu den angeklickten Flächen.


    Zitat von BrokenHeart

    Versuch doch mal diese CSS/JS-Codes.

    Werde es mal testen. Kann aber dauern.

  • Tabs unten

    • Fox2Fox
    • 22. Januar 2020 um 18:18

    Habe jetzt beim Fremdrechner folgendes gemacht:

    layout.css.xul-box-display-values.survive-blockification.enabled stand schon auf true

    Diese CSS genommen

    CSS
        @charset "UTF-8";
    
        /* Tab-Leiste unterhalb der Symbolleiste verschieben */
        #titlebar { -moz-box-ordinal-group: 2; }
    
        /* Menü nach oben verschieben */
        #toolbar-menubar { position: fixed; display: inline-flex; }
        [sizemode="maximized"]:not([tabsintitlebar="true"]) #toolbar-menubar,
        [sizemode="normal"] #toolbar-menubar { top: 1px; }
        [sizemode="maximized"] #toolbar-menubar { top: 8px; }
    
        /* Platz für die Menüleiste oberhalb der Symbolleiste schaffen */
        #main-window[tabsintitlebar="true"] #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 29px transparent !important; }
        #main-window:not([tabsintitlebar="true"]) #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 21px transparent !important; }
    
        /* Freien Bereich für Menü und Titelleistenschaltflächen festlegen */
        [tabsintitlebar="true"] #navigator-toolbox { -moz-window-dragging: drag; }
    
        /* Titelleistenschaltfläche nach rechts oben verschieben */
        #navigator-toolbox:not([style^="margin-top:"])[style=""][inFullscreen="true"] #window-controls,
        [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 { top: 0; }
    
        /* auf der rechten Seite Platz machen, damit die Schaltflächen der Titelleiste und der 
           Navigationssymbolleiste nicht im Vollbildmodus angezeigt werden */
        #navigator-toolbox[inFullscreen="true"] #nav-bar { padding-right: 109px !important; }
    
        /*Mehrzeilige Tableiste */
        tabs > arrowscrollbox { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap; }
        tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
        tabs tab,.tab-background { height: var(--tab-min-height); }
        tab > .tab-stack { width: 100%; }
    
        /* Tableiste Linken und rechten Ziehbereich Ausblenden
           Links und rechts → hbox.titlebar-spacer 
           Nur links → hbox.titlebar-spacer[type="pre-tabs"] 
           Nur rechts → hbox.titlebar-spacer[type="post-tabs"] */
        hbox.titlebar-spacer
        ,
        /* Ausblenden */
        #alltabs-button,tabs tab:not([fadein]),
        [class="scrollbutton-up"],[class="scrollbutton-up"] ~ spacer,
        [class="scrollbutton-down"] { display: none; }
        
        #titlebar {
         margin-top: -25px !important;
        }
    Alles anzeigen

    und das script gelöscht

    JavaScript
    // ==UserScript==
    // @name zzzz-MultiRowTab_LiteforFx48.uc.js
    // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description 多段タブもどき実験版 CSS入れ替えまくりLiteバージョン
    // @include main
    // @compatibility Firefox 71
    // @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() {
    
    var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    
    /* ツールバーの調節 */
    [tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; }
    #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; }
    
    /* タブバーのタイトルバーボタンが縦長にならないようにする */
    [tabsintitlebar="true"] #TabsToolbar > .titlebar-buttonbox-container,
    #main-window[inFullscreen="true"] #window-controls { display: block; }
    
    /* 多段タブ */
    tabs > arrowscrollbox { display: block; }
    scrollbox[part][orient="horizontal"] {
    display: flex;
    flex-wrap: wrap; }
    tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
    tabs tab,.tab-background {
    height: var(--tab-min-height);
    z-index: 1 !important; }
    tab > .tab-stack { width: 100%; }
    
    /* タブバー 左右のドラッグ領域 非表示
    左右 → hbox.titlebar-spacer
    左 → hbox.titlebar-spacer[type="pre-tabs"]
    右 → hbox.titlebar-spacer[type="post-tabs"] */
    hbox.titlebar-spacer
    ,
    /* 非表示 */
    #alltabs-button,tabs tab:not([fadein]),
    [class="scrollbutton-up"],
    [class="scrollbutton-up"] + spacer,
    scrollbox[part][orient="horizontal"] + spacer,
    [class="scrollbutton-down"] { 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);
    
    var css =`
    tabs tab {
    border-left: solid 1px hsla(0,0%,50%,.5) !important;
    border-right: solid 1px hsla(0,0%,50%,.5) !important;
    }
    tabs tab:after,tabs tab:before { display: none !important; }
    `;
    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.AUTHOR_SHEET);
    
    gBrowser.tabContainer.clearDropIndicator = function() {
    var tabs = this.allTabs;
    for (let i = 0, len = tabs.length; i < len; i++) {
    tabs[i].style.removeProperty("border-left-color");
    tabs[i].style.removeProperty("border-right-color");
    }
    }
    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);
    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();
    if (RTL_UI) {
    newMargin = rect.right - tabRect.left;
    } else {
    newMargin = tabRect.right - rect.left;
    }
    children[newIndex - 1].style.setProperty("border-right-color","red","important");
    } else {
    let tabRect = children[newIndex].getBoundingClientRect();
    if (RTL_UI) {
    newMargin = rect.right - tabRect.right;
    } else {
    newMargin = tabRect.left - rect.left;
    }
    children[newIndex].style.setProperty("border-left-color","red","important");
    }
    }
    ind.hidden = false;
    newMargin += ind.clientWidth / 2;
    if (RTL_UI) {
    newMargin *= -1;
    }
    ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
    ind.style.marginInlineStart = -ind.clientWidth + "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;
    }
    let animate = gBrowser.animationsEnabled;
    if (oldTranslateX && oldTranslateX != newTranslateX && animate) {
    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 + tabs[i].getBoundingClientRect().height
    ) {
    if (
    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 + 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
    ) {
    return i + 1;
    }
    }
    }
    }
    return tabs.length;
    }
    
    }
    Alles anzeigen

    Es macht sich ein seltsamer Effekt breit.

    Wenn ich auf die Tableiste einen Rechtsklick mache, sieht das Kontextmenü so aus

    Das ist doch eigentlich das Kontextmenü der Titelleiste. Diese ist aber ausgeblendet.

    Dann macht sich dieses blaue Feld breit. Oben sieht man dieses rote Feld, das ist der untere Rand der Schaltfläche "Schließen", also dieses Schließkreuz in der Titelleiste. Titelleiste ist wie gesagt ausgeblendet.

    Weiter:

    Wenn ich in die Menüleiste links von "Menü" einen Rechtsklick mache, sieht es so aus


    Wenn ich in die Menüleiste rechts von "Hilfe" einen Rechtsklick mache, sieht es so aus


    Der einzig positive Effekt vom Austausch script gegen CSS ist der, dass die Tabs korrekt aussehen und auch mehrreihig möglich sind.

    Hat jemand zu den geschilderten Effekten eine Idee?

    Für mich sieht es so aus, als wäre die Leiste, in der sich die Tabs befinden, keine Tableiste, da das Kontextmenü nicht dazu passt.

  • Stummschaltung für Tab beenden hat keine Funktion

    • Fox2Fox
    • 22. Januar 2020 um 16:16

    So siehts gut aus... :)

    CSS
    #titlebar {
         margin-top: -25px !important;
        }

    Besten Dank!

  • Stummschaltung für Tab beenden hat keine Funktion

    • Fox2Fox
    • 22. Januar 2020 um 13:42

    Habe jetzt diese CSS getestet.

    CSS
        @charset "UTF-8";
    
        /* Tab-Leiste unterhalb der Symbolleiste verschieben */
        #titlebar { -moz-box-ordinal-group: 2; }
    
        /* Menü nach oben verschieben */
        #toolbar-menubar { position: fixed; display: inline-flex; }
        [sizemode="maximized"]:not([tabsintitlebar="true"]) #toolbar-menubar,
        [sizemode="normal"] #toolbar-menubar { top: 1px; }
        [sizemode="maximized"] #toolbar-menubar { top: 8px; }
    
        /* Platz für die Menüleiste oberhalb der Symbolleiste schaffen */
        #main-window[tabsintitlebar="true"] #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 29px transparent !important; }
        #main-window:not([tabsintitlebar="true"]) #navigator-toolbox:not([inFullscreen="true"]) { border-top: solid 21px transparent !important; }
    
        /* Freien Bereich für Menü und Titelleistenschaltflächen festlegen */
        [tabsintitlebar="true"] #navigator-toolbox { -moz-window-dragging: drag; }
    
        /* Titelleistenschaltfläche nach rechts oben verschieben */
        #navigator-toolbox:not([style^="margin-top:"])[style=""][inFullscreen="true"] #window-controls,
        [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 { top: 0; }
    
        /* auf der rechten Seite Platz machen, damit die Schaltflächen der Titelleiste und der 
           Navigationssymbolleiste nicht im Vollbildmodus angezeigt werden */
        #navigator-toolbox[inFullscreen="true"] #nav-bar { padding-right: 109px !important; }
    
        /*Mehrzeilige Tableiste */
        tabs > arrowscrollbox { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap; }
        tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
        tabs tab,.tab-background { height: var(--tab-min-height); }
        tab > .tab-stack { width: 100%; }
    
        /* Tableiste Linken und rechten Ziehbereich Ausblenden
           Links und rechts → hbox.titlebar-spacer 
           Nur links → hbox.titlebar-spacer[type="pre-tabs"] 
           Nur rechts → hbox.titlebar-spacer[type="post-tabs"] */
        hbox.titlebar-spacer
        ,
        /* Ausblenden */
        #alltabs-button,tabs tab:not([fadein]),
        [class="scrollbutton-up"],[class="scrollbutton-up"] ~ spacer,
        [class="scrollbutton-down"] { display: none; }
    Alles anzeigen

    Funktioniert soweit. Aber die Tableiste ist zu hoch. Welchen Wert muss ich anpassen?

    Bild vergessen

  • Stummschaltung für Tab beenden hat keine Funktion

    • Fox2Fox
    • 22. Januar 2020 um 12:58

    Habe dieses script getestet, damit funktioniert

    JavaScript
    // ==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 72
    // @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() {
    
        var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    
        /* Anpassung der Symbolleisten */
        [tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; }
        #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; }
    
        /* Verhindern, dass die Titelleistenschaltflächen auf der Tableiste im Hochformat angezeigt werden */
        [tabsintitlebar="true"] #TabsToolbar > .titlebar-buttonbox-container,
        #main-window[inFullscreen="true"] #window-controls { display: block; }
    
        /* Mehrzeilige Tableiste */
        tabs > arrowscrollbox { display: block; }
        scrollbox[part][orient="horizontal"] {
            display: flex;
            flex-wrap: wrap;
            max-height: calc(var(--tab-min-height) * 2); /* 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; }
        tab > .tab-stack { width: 100%; }
    
        /* 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 */
        #alltabs-button,
        tabs tab:not([fadein]),
        [class="scrollbutton-up"],
        [class="scrollbutton-up"] ~ spacer,
        [class="scrollbutton-down"] { 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() {
            var tabs = document.getElementsByClassName("tab-background");
            for (let i = 0, len = tabs.length; i < len; i++) {
                tabs[i].style.removeProperty("border-left-style");
                tabs[i].style.removeProperty("border-right-style");
            }
        }
        gBrowser.tabContainer.addEventListener("dragleave", function(event) { this.clearDropIndicator(event); }, true);
    
        gBrowser.tabContainer.on_dragover = function(event) {
            this.clearDropIndicator();
            var effects = this._getDropEffectForTabDrag(event);
            event.preventDefault();
            event.stopPropagation();
            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;
                    }
                    return;
                }
            }
            let newIndex = this._getDropIndex(event, effects == "link");
            let children = document.getElementsByClassName("tab-background");
            if (newIndex == children.length) {
                children[newIndex - 1].style.setProperty("border-right","2px solid red","important");
            } else {
                children[newIndex].style.setProperty("border-left","2px solid red","important");
            }
        }
    
        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;
                }
                let animate = gBrowser.animationsEnabled;
                if (oldTranslateX && oldTranslateX != newTranslateX && animate) {
                    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 + tabs[i].getBoundingClientRect().height
                    ) {
                        if (
                            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 + 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
                        ) {
                            return i + 1;
                        }
                    }
                }
            }
            return tabs.length;
        }
    
    }
    Alles anzeigen

    Die Darstellung der zweiten Tabreihe sieht so aus. Den Tabs fehlt etwas an Höhe.

    Wenn die zweite Reihe voll ist, macht sich nach Öffnen neuer Tabs aber keine dritte Reihe auf.

    Ist dieses script anpassbar?

  • Tabs unten

    • Fox2Fox
    • 22. Januar 2020 um 12:39

    Werde ich bei Gelegenheit testen. Da Fremdrechner, mache ich das per Teamviewer.

    Danke soweit, melde mich dann.

  • Stummschaltung für Tab beenden hat keine Funktion

    • Fox2Fox
    • 22. Januar 2020 um 12:35

    Gibt es denn ein anderes script für mehrzeilige Tabs?

  • Stummschaltung für Tab beenden hat keine Funktion

    • Fox2Fox
    • 22. Januar 2020 um 12:24

    Habe bemerkt, dass die "Stummschaltung für Tab aufheben" keine Funktion hat. Klicke ich auf das Lautsprechersymbol im Tab, tut sich nix.

    "Stummschaltung für Tab aufheben" sehe ich, wenn ich im Tab einen Rechtsklick mache.

    "Stummschaltung für Tab beenden" sehe ich, wenn ich auf das Lautsprechersymbol einen Rechtsklick mache.

    Beispiel:

    https://www.deutschlandfunkkultur.de/unsere-live-streams.2428.de.html

    Das Problem zeigt sich aber auf jeder Seite mit Ton.

    Wenn ich das script Tabs_mehrzeilig.uc.js entferne, klappt es wieder mit dem Aktivieren und Deaktivieren.

    Das script funktioniert ansonsten.

    Kann mir bitte jemand sagen, was an diesem script faul ist?

    JavaScript
    // ==UserScript==
    // @name zzzz-MultiRowTab_LiteforFx48.uc.js
    // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description 多段タブもどき実験版 CSS入れ替えまくりLiteバージョン
    // @include main
    // @compatibility Firefox 71
    // @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() {
    
    var css =` @-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
    
    /* ツールバーの調節 */
    [tabsintitlebar="true"][sizemode="maximized"] #navigator-toolbox { padding-top: 8px !important; }
    #titlebar,#tabbrowser-tabs { -moz-appearance: none !important; }
    
    /* タブバーのタイトルバーボタンが縦長にならないようにする */
    [tabsintitlebar="true"] #TabsToolbar > .titlebar-buttonbox-container,
    #main-window[inFullscreen="true"] #window-controls { display: block; }
    
    /* 多段タブ */
    tabs > arrowscrollbox { display: block; }
    scrollbox[part][orient="horizontal"] {
    display: flex;
    flex-wrap: wrap; }
    tabs tab[fadein]:not([pinned]) { flex-grow: 1; }
    tabs tab,.tab-background {
    height: var(--tab-min-height);
    z-index: 1 !important; }
    tab > .tab-stack { width: 100%; }
    
    /* タブバー 左右のドラッグ領域 非表示
    左右 → hbox.titlebar-spacer
    左 → hbox.titlebar-spacer[type="pre-tabs"]
    右 → hbox.titlebar-spacer[type="post-tabs"] */
    hbox.titlebar-spacer
    ,
    /* 非表示 */
    #alltabs-button,tabs tab:not([fadein]),
    [class="scrollbutton-up"],
    [class="scrollbutton-up"] + spacer,
    scrollbox[part][orient="horizontal"] + spacer,
    [class="scrollbutton-down"] { 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);
    
    var css =`
    tabs tab {
    border-left: solid 1px hsla(0,0%,50%,.5) !important;
    border-right: solid 1px hsla(0,0%,50%,.5) !important;
    }
    tabs tab:after,tabs tab:before { display: none !important; }
    `;
    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.AUTHOR_SHEET);
    
    gBrowser.tabContainer.clearDropIndicator = function() {
    var tabs = this.allTabs;
    for (let i = 0, len = tabs.length; i < len; i++) {
    tabs[i].style.removeProperty("border-left-color");
    tabs[i].style.removeProperty("border-right-color");
    }
    }
    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);
    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();
    if (RTL_UI) {
    newMargin = rect.right - tabRect.left;
    } else {
    newMargin = tabRect.right - rect.left;
    }
    children[newIndex - 1].style.setProperty("border-right-color","red","important");
    } else {
    let tabRect = children[newIndex].getBoundingClientRect();
    if (RTL_UI) {
    newMargin = rect.right - tabRect.right;
    } else {
    newMargin = tabRect.left - rect.left;
    }
    children[newIndex].style.setProperty("border-left-color","red","important");
    }
    }
    ind.hidden = false;
    newMargin += ind.clientWidth / 2;
    if (RTL_UI) {
    newMargin *= -1;
    }
    ind.style.transform = "translate(" + Math.round(newMargin) + "px)";
    ind.style.marginInlineStart = -ind.clientWidth + "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;
    }
    let animate = gBrowser.animationsEnabled;
    if (oldTranslateX && oldTranslateX != newTranslateX && animate) {
    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 + tabs[i].getBoundingClientRect().height
    ) {
    if (
    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 + 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
    ) {
    return i + 1;
    }
    }
    }
    }
    return tabs.length;
    }
    
    }
    Alles anzeigen
  • Tabs unten

    • Fox2Fox
    • 21. Januar 2020 um 20:23

    Es geht um einen Fremdrechner.

    Ein seltsames Phänomen...

    Die Tableiste wird so dargestellt, ist ca. um die Hälfte in der Höhe verringert. Dazu zeigt sich diese dunkle Fläche auf der rechten Seite.

    Wenn ich dieses script Tabs_unten.uc.js entferne, ist die Tableiste oben und alles wird korrekt dargestellt.

    Die Tableiste sollte aber unter der Lesezeichensymbolleiste zu sehen sein.

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

    Das seltsame daran ist, dass ich den kompletten Ordner "chrome" vom Win8.1-Rechner bei mir gestestet habe und da zeigt sich das Problem nicht.

    Habe sogar den gesamten Profilordner vom Fremdrechner bei mir getestet, das Problem mit der Tableiste zeigt sich auf meinem Win7/64 Rechner nicht.

    Habe einen portablen Firefox mit meinem Profil auf dem Fremdrechner erstellt. Dort zeigt sich das Problem nicht.

    Der portable Firefox auf dem Fremdrechner mit dem Fremdprofil zeigt das Problem.

    Da bin ich mit meinem Latein am Ende, aber vielleicht hat jemand eine Idee.

  • Huge memory Problem :(

    • Fox2Fox
    • 18. Januar 2020 um 13:16
    Zitat von FuchsFan

    @Spektrum

    Es gibt da ja einen Schalter unter about:config zur RAM-Begrenzung. Ob der in deinem Fall jetzt Wirkung zeigt müsstest du mal ausprobieren.

    config.trim_on_minimize auf true

    Der Schalter ist standardmäßig nicht vorhanden.

  • Separatoren ausblenden

    • Fox2Fox
    • 14. Januar 2020 um 14:13
    Zitat von milupo

    oder in zusammengefasster Schreibweise:

    CSS
    #context_duplicateTabs + menuseparator, #context_sendTabToDevice + menuseparator {
    display: none !important;
    }

    Habe mich dafür entschieden und es klappt damit! Vielen Dank!

  • Separatoren ausblenden

    • Fox2Fox
    • 12. Januar 2020 um 19:15

    Wie kann ich die beiden Separatoren ausblenden, die sich im Kontextmenü eines Tabs breitmachen?

  • Lesezeichensymbolleiste - Alle LZ untereinander

    • Fox2Fox
    • 12. Januar 2020 um 14:02

    Problem gelöst - siehe hier

  • Bitte aktivieren Sie das PDF-Anzeigeprogramm Ihres Browsers, oder installieren Sie ein PDF-Anzeigeprogramm72.0.

    • Fox2Fox
    • 12. Januar 2020 um 13:59
    Zitat von .DeJaVu

    Wenn Telekom Magenta den Server so eingestellt hat, dass PDF nur als Download angeboten werden, dann ist das so, da kann Firefox auch nichts dran ändern.

    Sieht bei mir anders aus, mir wird Öffnen und Speichern angeboten.

  • Firefox 74 Nightly - CSS-Code für mehrzeilige Lesezeichenleiste funktioniert nicht mehr

    • Fox2Fox
    • 12. Januar 2020 um 13:38
    Zitat von milupo

    Probiere mal folgenden Code:

    Mit diesem Code klappt es. Habe testweise mal 5 Reihen angelegt, es macht sich auch kein Scrollbalken breit.

    Besten Dank!

Unterstütze uns!

Jährlich (2025)

104,5 %

104,5% (679,10 von 650 EUR)

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