Zumal beide Skripte in etwa gleich viele Zeilen Code haben!
Lösung, die mit wenigen grundlegenden Zeilen Javascript auskommt
Hier liegt der Unterschied.
Zumal beide Skripte in etwa gleich viele Zeilen Code haben!
Lösung, die mit wenigen grundlegenden Zeilen Javascript auskommt
Hier liegt der Unterschied.
Ist es denn wirklich so, dass ein kaputtes Skript zu "reparieren" wichtiger ist, als eine funktionierende Lösung anbieten zu können?
Das Script aus Beitrag #36 ist keinesfalls ein repariertes Script sondern eine neue, funktionierende Lösung, die mit wenigen grundlegenden Zeilen Javascript auskommt, deshalb wahrscheinlich robuster bei Updates ist.
Kein Eintrag für: Linke Tabs schließen vorhanden.
Danke, da bin ich ja mal gespannt wie sich das weiter entwickeln wird...
2002Andreas Hallo, ich bin jetzt auf 156.0a1 (2026-08-27) und unter Linux funktioniert nach wie vor das Script aus Beitrag #26. Vom TE höre ich auch nichts; war das evtl. bloß ein temporäres Problem auf Windows und hat sich in Luft aufgelöst?
Dolly Parton - Jolene
The Rocky Horror Picture Show "Sweet Transvestite"
Lege ich einen neuen Ordner z.B. 'css_test' an und verschiebe einige css Dateien dorthin, funzt es wie es soll.
Deshalb funzt das also bei mir. Die verschobenen Dateien haben dann keine Verbindung über die Import-Regeln mehr zur userChrome, weil sie sich nicht mehr im importierten Ordner befinden, sondern in einem sozusagen unabhängigen Order ohne Anbindung.
Wenn ich hier let cssFolder = den vorh. Ordner 'css' eintrage habe dies Probl. wie Andreas und Lenny auch. Lege ich einen neuen Ordner z.B. 'css_test' an und verschiebe einige css Dateien dorthin, funzt es wie es soll.
Habe diese Meldung bei vielen Scripten hier gesehen.
Diese Fehlermeldung erscheint wenn eine Funktion ohne z.B. if (!window.gBrowser) return;oder if (location.href !== 'chrome://browser/content/browser.xhtml') return; initiiert wird. Diese Fehlermeldung habe ich oft bei Fremdscripten. Früher habe ich die S. noch korrigiert, jetzt nicht mehr.... ![]()
Dies ist dann die 'große' Lösung:
// JavaScript Document
// developed without AI-based applications or tools
// T_TabContext_CloseLeftRightOther.uc.js
// FF 154+
// Quelle: https://www...
// Das Script verschiebt die Schließenmenüeinträge aus dem Untermenü '#context_closeTabOptions' ins Tabkontextmenü unter den Eintrag 'Tab schließen' und löscht den entsprechenden Menüeintrag 'Mehrere Tabs schließen'. Nicht auswählbare [disabled] Einträge werden ausgeblendet.
(function() {
if (!window.gBrowser)
return;
const
origStart = document.getElementById('context_closeTabsToTheStart'),
origEnd = document.getElementById('context_closeTabsToTheEnd'),
origOther = document.getElementById('context_closeOtherTabs'),
cloneStart = origStart.cloneNode(),
cloneEnd = origEnd.cloneNode(),
cloneOther = origOther.cloneNode(),
ref = document.getElementById('context_closeTab');// end const
// Reihenfolge der 3 folgenden Zeilen hier beeinflusst die Reihenfolge im Kontextmenü
tabContextMenu.insertBefore(cloneOther, ref.nextSibling);
tabContextMenu.insertBefore(cloneEnd, ref.nextSibling);
tabContextMenu.insertBefore(cloneStart, ref.nextSibling);
var css =`
#context_closeTabOptions {
display: none !important;
}
#context_closeTabsToTheStart[disabled],
#context_closeTabsToTheEnd[disabled],
#context_closeOtherTabs[disabled] {
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);
})();
Alles anzeigen
Sieht dort so aus:
Funktioniert, super.
Aber ist das auch das vom TE gewünschte Ergebnis?
Im 154 geht dies, im Nightly kann ich ja noch nicht testen:
(function() {
if (!window.gBrowser)
return;
const orig = document.getElementById('context_closeOtherTabs');
const clone = orig.cloneNode();
const ref = document.getElementById('context_bookmarkTab');
tabContextMenu.insertBefore(clone, ref.nextSibling);
var css =`
#context_closeTabOptions {
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);
})();
Alles anzeigen
Sieht hier im Nightly so aus:
Danke, dann kommt das wohl in Linux noch...
Eine andere einfache Lsg. wäre vielleicht über cloneNode die Einträge zu verdoppeln und eine Ebene höher zu verschieben und dann mit css die Originaleinträge auszublenden. Aber ob da die volle Funktionalität erhalten bleibt, ist dann die nächste Frage...Und beim Clonen wird es wohl eine zeitliche Verzögerung geben, aber ob die relevant ist... Wenn die FF-Änderungen dann in der Stable oder Beta angekommen sind, werde ich das für mich auf jeden Fall mal versuchen.
Gerade mit der neuesten Nightly auf Linux getestet, läuft!
Dieses Thema ist so ähnlich:
Vielleicht kommt man da der Lösung näher?
Dieses funzt auch in der Nightly (order: -1 !important; muss evtl. ab Zeile 22 angepasst werden auf z.B. order: 1 !important;) 😵💫:
(function() {
if (!window.gBrowser)
return;
let menuitem = document.createXULElement('menuitem');
menuitem.id = 'context_closeLeftTabs';
menuitem.setAttribute('label', 'Linke Tabs schließen');
let tabContextMenu = document.getElementById('tabContextMenu');
let refItem = document.getElementById('context_closeTab');
tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheStart'), refItem);
tabContextMenu.insertBefore(document.getElementById('context_closeTabsToTheEnd'), refItem);
tabContextMenu.insertBefore(document.getElementById('context_closeOtherTabs'), refItem);
//click
menuitem.addEventListener('click', () => {
if (event.button == 0) {
for (let i = TabContextMenu.contextTab._tPos - 1; i >= 0; i--)gBrowser.removeTab(gBrowser.tabs[i], {animate: true});
}
});
var css =`
#context_closeTabsToTheStart {
order: -1 !important;
}
#context_closeTabsToTheEnd {
order: -1 !important;
}
#context_closeOtherTabs {
order: -1 !important;
}
#context_closeTabOptions {
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);
})();
Alles anzeigen
Die css dazu (nur Iconpfad - keine Positionierung):
/*Close--OtherTabs-------------------------------------*/
#context_closeOtherTabs::before {
background-image: url("../icons/16_X_andere_redorange.svg") !important;
}
#context_closeOtherTabs:hover::before {
background-image: url("../icons/16_X_andere_white.svg") !important;
}
/*Close--TabsToTheStart--------------------------------*/
#context_closeTabsToTheStart::before {
background-image: url("../icons/16_X_linke_redorange.svg") !important;
}
#context_closeTabsToTheStart:hover::before {
background-image: url("../icons/16_X_linke_white.svg") !important;
}
#context_closeTabsToTheStart[disabled] {
display: none !important;
}
/*Close--TabsToTheEnd----------------------------------*/
#context_closeTabsToTheEnd::before {
background-image: url("../icons/16_X_rechte_redorange.svg") !important;
}
#context_closeTabsToTheEnd:hover::before {
background-image: url("../icons/16_X_rechte_white.svg") !important;
}
#context_closeTabsToTheEnd[disabled] {
display: none !important;
}
Alles anzeigen
Icons (dunkles Thema):
lanz-andy . Eine Grafik enhält einen nicht geschwärzten Namen. Soll das so?
Endor Ja, merkwürdigerweise funzt der Mittelklick if (event.button == 1 && !this.open). Habe das jetzt mehrmals in einem neuen Profil geprüft...Rechtsklick funzt definitiv nicht (und event.preventDefault(); auch nicht).