I am not sure, is this Script used to change the new Tab url?
Das Skript funktioniert in Firefox v128.0.2.
I am not sure, is this Script used to change the new Tab url?
Das Skript funktioniert in Firefox v128.0.2.
Hallo Zusammen,
kann jemand mir sagen, wieso kommt (NULL) Beschreibung (bis Firefox 115.13.0 ESR war normal aber mit 128 ESR kommt (NULL)).
Hier ist ToolbarAutoHide.uc.js code:
(function () {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let navbox = document.getElementById('navigator-toolbox');
let menubar = document.getElementById('toolbar-menubar');
let tabsbar = document.getElementById('TabsToolbar');
let navbar = document.getElementById('nav-bar');
let perbar = document.getElementById('PersonalToolbar');
// Überwachen Änderungen an Symbolleistenattributen/toolbar
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
toolbarFlag(mutation);
});
});
let config = {
attributes: true,
attributeOldValue: true,
attributeFilter: ['customizing', 'autohide', 'collapsed', 'barAuto']
};
observer.observe(menubar, config);
observer.observe(tabsbar, config);
observer.observe(navbar, config);
observer.observe(perbar, config);
// Überwachen Größe der Tableiste/tabsbar
let resizeObserver = new ResizeObserver(function (entries) {
entries.forEach(function (entry) {
toolbarFlag(entry);
});
});
resizeObserver.observe(tabsbar);
/**/
// Tab-Leiste und Navigationsleiste können ebenfalls ausgeblendet werden
tabsbar.setAttribute('toolbarname', tabsbar.getAttribute('aria-label'));
navbar.setAttribute('toolbarname', navbar.getAttribute('aria-label'));
toolbar-menubar.setAttribute('toolbarname', "Menüleiste");
/*
// Die Lesezeichenleiste wird standardmäßig automatisch geöffnet und geschlossen
menubar.removeAttribute('barAuto');
tabsbar.removeAttribute('barAuto');
navbar.removeAttribute('barAuto');
perbar.setAttribute('barAuto', 'true');
*/
// Speichern, ob in Firefox automatisch geöffnet/geschlossen werden soll
menubar.setAttribute('persist', 'barAuto');
tabsbar.setAttribute('persist', 'barAuto');
navbar.setAttribute('persist', 'barAuto');
perbar.setAttribute('persist', 'barAuto');
// Die Tab-Leiste weist viele Probleme auf, daher sollte sie sich beim Start nicht automatisch öffnen und schließen.
tabsbar.removeAttribute('barAuto');
// Fügen Navigationsfeld ein leeres Element hinzu, um alles zu löschen. Doppelklicken Sie zum Wiederherstellen.
let box = MozXULElement.parseXULToFragment(`
<vbox id="nav-box-escape" context="toolbar-context-menu" tooltiptext="Doppelklicken Sie, um die Symbolleiste anzuzeigen"/>
`);
navbox.appendChild(box);
/*
// Symbolleisten-Kontextmenü zum Kontextmenükopf hinzugefügt
document.getElementById('context-navigation').setAttribute('context', 'toolbar-context-menu');
*/
// Element zum Symbolleistenmenü hinzufügen
let menu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-menu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-popup" onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('menu_customizeToolbars').before(menu);
// Zum Rechtsklickmenü in der Navigation hinzufügen
let contextmenu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-contextmenu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-contextpopup"
onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('viewToolbarsMenuSeparator').after(contextmenu);
let uccss = `
#navigator-toolbox #titlebar {
-moz-box-ordinal-group : 0;
}
#navigator-toolbox #toolbar-menubar {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox #TabsToolbar {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox #nav-bar {
-moz-box-ordinal-group : 3;
}
#navigator-toolbox #PersonalToolbar {
-moz-box-ordinal-group : 4;
}
#navigator-toolbox[barsAuto]:not([custommode]) {
z-index : 100 !important;
position : relative !important;
}
#navigator-toolbox[barsAuto]:not(:-moz-lwtheme, [custommode]) {
background-color : var(--toolbar-bgcolor) !important;
background-image : var(--toolbar-bgimage) !important;
}
#navigator-toolbox[barsAuto]:-moz-lwtheme:not([custommode]) {
background-color : var(--lwt-accent-color) !important;
background-image : var(--lwt-header-image, var(--lwt-additional-images)) !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[notShown] {
-moz-box-ordinal-group : 10;
transition : all 0.3s ease 0s;
height : 5px;
cursor : alias;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape:not([notShown]) {
display : none;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[allAuto] {
margin-block-end : -5px;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-box-escape[allAuto] {
height : 0;
margin-block-end : 0;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]) {
margin-block-end : 0;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]):hover {
margin-block-end : calc(var(--barshide-height) * -1px);
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] {
margin-block-start : calc(var(--ttlhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] {
margin-block-start : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 1;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #PersonalToolbar[barAuto] {
margin-block-start : calc(var(--barhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #PersonalToolbar[barAuto] {
margin-block-start : 0 !important;
opacity : 1 !important;
}
`;
let ucuri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(uccss));
let ucsss = Cc['@mozilla.org/content/style-sheet-service;1']
.getService(Ci.nsIStyleSheetService);
ucsss.loadAndRegisterSheet(ucuri, ucsss.AGENT_SHEET);
} catch (e) { };
})();
// beim Start eingestellt
window.addEventListener('MozAfterPaint', toolbarsset, { once: true });
// Anzeige von #TabsToolbar und Navigationsleiste mit ESC-Taste erzwingen
document.addEventListener('keydown', function (event) {
if (event.keyCode == 27) navescape();
});
// Doppelklicken Sie auf die Leiste, wenn alles gelöscht ist, um sie wiederherzustellen
document.getElementById('nav-box-escape').addEventListener('dblclick', navescape);
function navescape() {
document.getElementById('nav-bar').setAttribute('collapsed', 'false');
document.getElementById('nav-bar').removeAttribute('barAuto');
document.getElementById('TabsToolbar').setAttribute('collapsed', 'false');
document.getElementById('TabsToolbar').removeAttribute('barAuto');
}
// Änderung des Attributwerts der Symbolleiste (anpassen, ausblenden)
function toolbarFlag(aEvent) {
let barelm = aEvent.target;
let attribute = aEvent.attributeName;
// Deaktivieren Sie die Anzeige der Tab-Leiste beim Hinzufügen von Tabs
if ((barelm.id == 'TabsToolbar')
&& (attribute == 'collapsed')
&& !(barelm.hasAttribute('collapsed'))) {
barelm.setAttribute('collapsed', aEvent.oldValue);
}
toolbarsset();
}
function toolbarsset() {
let boxelm = document.getElementById('navigator-toolbox');
let ttlbar = document.getElementById('titlebar');
let escbox = document.getElementById('nav-box-escape');
let barelm, hidingAttr, barheight, hasShown;
let barshide = 0, barsAuto = false, custommode = false, notShown = true;
let ttlhide = 0, tbarsAuto = false, allAuto = false;
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
if (hasShown = (barelm.getAttribute(hidingAttr) == 'true')) barelm.removeAttribute('barAuto');
barheight = barelm.clientHeight;
if (barelm.hasAttribute('barAuto')) {
barsAuto = true;
allAuto = true;
barelm.style.setProperty("--barhide-height", barheight);
barshide += barheight;
if ((toolbar == 'toolbar-menubar') || (toolbar == 'TabsToolbar')) {
tbarsAuto = true;
ttlhide += barheight;
}
} else {
if (!hasShown) notShown = false;
barelm.style.setProperty("--barhide-height", 0);
}
if (barelm.hasAttribute('customizing')) custommode = true;
}
if (barsAuto) boxelm.setAttribute('barsAuto', 'true');
else boxelm.removeAttribute('barsAuto');
if (tbarsAuto) ttlbar.setAttribute('barsAuto', 'true');
else ttlbar.removeAttribute('barsAuto');
if (custommode) boxelm.setAttribute('custommode', 'true');
else boxelm.removeAttribute('custommode');
if (notShown) {
escbox.setAttribute('notShown', 'true');
if (allAuto) escbox.setAttribute('allAuto', 'true');
else escbox.removeAttribute('allAuto');
} else {
escbox.removeAttribute('notShown');
}
boxelm.style.setProperty("--barshide-height", barshide);
ttlbar.style.setProperty("--ttlhide-height", ttlhide);
}
// Menüerstellung
function autoHideToolbarsPopupShowing(aEvent) {
let popup = aEvent.target;
if (popup != aEvent.currentTarget) return;
while (popup.firstChild) popup.removeChild(popup.firstChild); // übersichtliches Menü
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
let barelm, hidingAttr;
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
let menuitem = MozXULElement.parseXULToFragment(`
<menuitem id="toolbarauto-${toolbar}" toolbarId="${toolbar}" type="checkbox"
label="${barelm.getAttribute('toolbarname')}"
checked="${(barelm.getAttribute('barAuto') == 'true')}"
disabled="${(barelm.getAttribute(hidingAttr) == 'true')}"
oncommand="autoHideToolbar(event);" />
`);
popup.append(menuitem);
}
}
// Automatische Prüfung des Öffnens/Schließens des Menüs
function autoHideToolbar(aEvent) {
let eventelm = aEvent.target;
let barid = eventelm.getAttribute('toolbarId');
let barelm = document.getElementById(barid);
if (eventelm.getAttribute('checked') == "true") {
barelm.setAttribute('barAuto', 'true');
} else {
barelm.removeAttribute('barAuto');
}
}
Alles anzeigen
Vielen Dank
Mfg
kann jemand mir sagen, wieso kommt (NULL)
Kann ich zwar nicht, aber wie du es ausblenden kannst:
(function () {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let navbox = document.getElementById('navigator-toolbox');
let menubar = document.getElementById('toolbar-menubar');
let tabsbar = document.getElementById('TabsToolbar');
let navbar = document.getElementById('nav-bar');
let perbar = document.getElementById('PersonalToolbar');
// Überwachen Änderungen an Symbolleistenattributen/toolbar
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
toolbarFlag(mutation);
});
});
let config = {
attributes: true,
attributeOldValue: true,
attributeFilter: ['customizing', 'autohide', 'collapsed', 'barAuto']
};
observer.observe(menubar, config);
observer.observe(tabsbar, config);
observer.observe(navbar, config);
observer.observe(perbar, config);
// Überwachen Größe der Tableiste/tabsbar
let resizeObserver = new ResizeObserver(function (entries) {
entries.forEach(function (entry) {
toolbarFlag(entry);
});
});
resizeObserver.observe(tabsbar);
/**/
// Tab-Leiste und Navigationsleiste können ebenfalls ausgeblendet werden
tabsbar.setAttribute('toolbarname', tabsbar.getAttribute('aria-label'));
navbar.setAttribute('toolbarname', navbar.getAttribute('aria-label'));
toolbar-menubar.setAttribute('toolbarname', "Menüleiste");
/*
// Die Lesezeichenleiste wird standardmäßig automatisch geöffnet und geschlossen
menubar.removeAttribute('barAuto');
tabsbar.removeAttribute('barAuto');
navbar.removeAttribute('barAuto');
perbar.setAttribute('barAuto', 'true');
*/
// Speichern, ob in Firefox automatisch geöffnet/geschlossen werden soll
menubar.setAttribute('persist', 'barAuto');
tabsbar.setAttribute('persist', 'barAuto');
navbar.setAttribute('persist', 'barAuto');
perbar.setAttribute('persist', 'barAuto');
// Die Tab-Leiste weist viele Probleme auf, daher sollte sie sich beim Start nicht automatisch öffnen und schließen.
tabsbar.removeAttribute('barAuto');
// Fügen Navigationsfeld ein leeres Element hinzu, um alles zu löschen. Doppelklicken Sie zum Wiederherstellen.
let box = MozXULElement.parseXULToFragment(`
<vbox id="nav-box-escape" context="toolbar-context-menu" tooltiptext="Doppelklicken Sie, um die Symbolleiste anzuzeigen"/>
`);
navbox.appendChild(box);
/*
// Symbolleisten-Kontextmenü zum Kontextmenükopf hinzugefügt
document.getElementById('context-navigation').setAttribute('context', 'toolbar-context-menu');
*/
// Element zum Symbolleistenmenü hinzufügen
let menu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-menu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-popup" onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('menu_customizeToolbars').before(menu);
// Zum Rechtsklickmenü in der Navigation hinzufügen
let contextmenu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-contextmenu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-contextpopup"
onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('viewToolbarsMenuSeparator').after(contextmenu);
let uccss = `
#toggle_TabsToolbar > label:before {
content: "Browser-Tabs" !important;
}
#toggle_nav-bar > label:before {
content: "Navigation" !important;
}
#navigator-toolbox #titlebar {
-moz-box-ordinal-group : 0;
}
#navigator-toolbox #toolbar-menubar {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox #TabsToolbar {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox #nav-bar {
-moz-box-ordinal-group : 3;
}
#navigator-toolbox #PersonalToolbar {
-moz-box-ordinal-group : 4;
}
#navigator-toolbox[barsAuto]:not([custommode]) {
z-index : 100 !important;
position : relative !important;
}
#navigator-toolbox[barsAuto]:not(:-moz-lwtheme, [custommode]) {
background-color : var(--toolbar-bgcolor) !important;
background-image : var(--toolbar-bgimage) !important;
}
#navigator-toolbox[barsAuto]:-moz-lwtheme:not([custommode]) {
background-color : var(--lwt-accent-color) !important;
background-image : var(--lwt-header-image, var(--lwt-additional-images)) !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[notShown] {
-moz-box-ordinal-group : 10;
transition : all 0.3s ease 0s;
height : 5px;
cursor : alias;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape:not([notShown]) {
display : none;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[allAuto] {
margin-block-end : -5px;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-box-escape[allAuto] {
height : 0;
margin-block-end : 0;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]) {
margin-block-end : 0;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]):hover {
margin-block-end : calc(var(--barshide-height) * -1px);
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] {
margin-block-start : calc(var(--ttlhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] {
margin-block-start : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 1;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
-moz-box-ordinal-group : 1;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto] {
-moz-box-ordinal-group : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #PersonalToolbar[barAuto] {
margin-block-start : calc(var(--barhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #PersonalToolbar[barAuto] {
margin-block-start : 0 !important;
opacity : 1 !important;
}
`;
let ucuri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(uccss));
let ucsss = Cc['@mozilla.org/content/style-sheet-service;1']
.getService(Ci.nsIStyleSheetService);
ucsss.loadAndRegisterSheet(ucuri, ucsss.AGENT_SHEET);
} catch (e) { };
})();
// beim Start eingestellt
window.addEventListener('MozAfterPaint', toolbarsset, { once: true });
// Anzeige von #TabsToolbar und Navigationsleiste mit ESC-Taste erzwingen
document.addEventListener('keydown', function (event) {
if (event.keyCode == 27) navescape();
});
// Doppelklicken Sie auf die Leiste, wenn alles gelöscht ist, um sie wiederherzustellen
document.getElementById('nav-box-escape').addEventListener('dblclick', navescape);
function navescape() {
document.getElementById('nav-bar').setAttribute('collapsed', 'false');
document.getElementById('nav-bar').removeAttribute('barAuto');
document.getElementById('TabsToolbar').setAttribute('collapsed', 'false');
document.getElementById('TabsToolbar').removeAttribute('barAuto');
}
// Änderung des Attributwerts der Symbolleiste (anpassen, ausblenden)
function toolbarFlag(aEvent) {
let barelm = aEvent.target;
let attribute = aEvent.attributeName;
// Deaktivieren Sie die Anzeige der Tab-Leiste beim Hinzufügen von Tabs
if ((barelm.id == 'TabsToolbar')
&& (attribute == 'collapsed')
&& !(barelm.hasAttribute('collapsed'))) {
barelm.setAttribute('collapsed', aEvent.oldValue);
}
toolbarsset();
}
function toolbarsset() {
let boxelm = document.getElementById('navigator-toolbox');
let ttlbar = document.getElementById('titlebar');
let escbox = document.getElementById('nav-box-escape');
let barelm, hidingAttr, barheight, hasShown;
let barshide = 0, barsAuto = false, custommode = false, notShown = true;
let ttlhide = 0, tbarsAuto = false, allAuto = false;
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
if (hasShown = (barelm.getAttribute(hidingAttr) == 'true')) barelm.removeAttribute('barAuto');
barheight = barelm.clientHeight;
if (barelm.hasAttribute('barAuto')) {
barsAuto = true;
allAuto = true;
barelm.style.setProperty("--barhide-height", barheight);
barshide += barheight;
if ((toolbar == 'toolbar-menubar') || (toolbar == 'TabsToolbar')) {
tbarsAuto = true;
ttlhide += barheight;
}
} else {
if (!hasShown) notShown = false;
barelm.style.setProperty("--barhide-height", 0);
}
if (barelm.hasAttribute('customizing')) custommode = true;
}
if (barsAuto) boxelm.setAttribute('barsAuto', 'true');
else boxelm.removeAttribute('barsAuto');
if (tbarsAuto) ttlbar.setAttribute('barsAuto', 'true');
else ttlbar.removeAttribute('barsAuto');
if (custommode) boxelm.setAttribute('custommode', 'true');
else boxelm.removeAttribute('custommode');
if (notShown) {
escbox.setAttribute('notShown', 'true');
if (allAuto) escbox.setAttribute('allAuto', 'true');
else escbox.removeAttribute('allAuto');
} else {
escbox.removeAttribute('notShown');
}
boxelm.style.setProperty("--barshide-height", barshide);
ttlbar.style.setProperty("--ttlhide-height", ttlhide);
}
// Menüerstellung
function autoHideToolbarsPopupShowing(aEvent) {
let popup = aEvent.target;
if (popup != aEvent.currentTarget) return;
while (popup.firstChild) popup.removeChild(popup.firstChild); // übersichtliches Menü
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
let barelm, hidingAttr;
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
let menuitem = MozXULElement.parseXULToFragment(`
<menuitem id="toolbarauto-${toolbar}" toolbarId="${toolbar}" type="checkbox"
label="${barelm.getAttribute('toolbarname')}"
checked="${(barelm.getAttribute('barAuto') == 'true')}"
disabled="${(barelm.getAttribute(hidingAttr) == 'true')}"
oncommand="autoHideToolbar(event);" />
`);
popup.append(menuitem);
}
}
// Automatische Prüfung des Öffnens/Schließens des Menüs
function autoHideToolbar(aEvent) {
let eventelm = aEvent.target;
let barid = eventelm.getAttribute('toolbarId');
let barelm = document.getElementById(barid);
if (eventelm.getAttribute('checked') == "true") {
barelm.setAttribute('barAuto', 'true');
} else {
barelm.removeAttribute('barAuto');
}
}
Alles anzeigen
Zeile 84 - 89 sind neu.
Sieht dann so aus:
2002Andreas Da sollte mal -moz-box-ordinal-group ausgetauscht werden,.
Da sollte mal -moz-box-ordinal-group ausgetauscht werden
Hallo milupo, das habe ich mal gemacht
(function () {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let navbox = document.getElementById('navigator-toolbox');
let menubar = document.getElementById('toolbar-menubar');
let tabsbar = document.getElementById('TabsToolbar');
let navbar = document.getElementById('nav-bar');
let perbar = document.getElementById('PersonalToolbar');
// Überwachen Änderungen an Symbolleistenattributen/toolbar
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
toolbarFlag(mutation);
});
});
let config = {
attributes: true,
attributeOldValue: true,
attributeFilter: ['customizing', 'autohide', 'collapsed', 'barAuto']
};
observer.observe(menubar, config);
observer.observe(tabsbar, config);
observer.observe(navbar, config);
observer.observe(perbar, config);
// Überwachen Größe der Tableiste/tabsbar
let resizeObserver = new ResizeObserver(function (entries) {
entries.forEach(function (entry) {
toolbarFlag(entry);
});
});
resizeObserver.observe(tabsbar);
/**/
// Tab-Leiste und Navigationsleiste können ebenfalls ausgeblendet werden
tabsbar.setAttribute('toolbarname', tabsbar.getAttribute('aria-label'));
navbar.setAttribute('toolbarname', navbar.getAttribute('aria-label'));
toolbar-menubar.setAttribute('toolbarname', "Menüleiste");
/*
// Die Lesezeichenleiste wird standardmäßig automatisch geöffnet und geschlossen
menubar.removeAttribute('barAuto');
tabsbar.removeAttribute('barAuto');
navbar.removeAttribute('barAuto');
perbar.setAttribute('barAuto', 'true');
*/
// Speichern, ob in Firefox automatisch geöffnet/geschlossen werden soll
menubar.setAttribute('persist', 'barAuto');
tabsbar.setAttribute('persist', 'barAuto');
navbar.setAttribute('persist', 'barAuto');
perbar.setAttribute('persist', 'barAuto');
// Die Tab-Leiste weist viele Probleme auf, daher sollte sie sich beim Start nicht automatisch öffnen und schließen.
tabsbar.removeAttribute('barAuto');
// Fügen Navigationsfeld ein leeres Element hinzu, um alles zu löschen. Doppelklicken Sie zum Wiederherstellen.
let box = MozXULElement.parseXULToFragment(`
<vbox id="nav-box-escape" context="toolbar-context-menu" tooltiptext="Doppelklicken Sie, um die Symbolleiste anzuzeigen"/>
`);
navbox.appendChild(box);
/*
// Symbolleisten-Kontextmenü zum Kontextmenükopf hinzugefügt
document.getElementById('context-navigation').setAttribute('context', 'toolbar-context-menu');
*/
// Element zum Symbolleistenmenü hinzufügen
let menu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-menu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-popup" onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('menu_customizeToolbars').before(menu);
// Zum Rechtsklickmenü in der Navigation hinzufügen
let contextmenu = MozXULElement.parseXULToFragment(`
<menu id="toolbarauto-contextmenu" label="Automatisch ausblenden">
<menupopup id="toolbarauto-contextpopup"
onpopupshowing="autoHideToolbarsPopupShowing(event);"/>
</menu>
<menuseparator/>
`);
document.getElementById('viewToolbarsMenuSeparator').after(contextmenu);
let uccss = `
#toggle_TabsToolbar > label:before {
content: "Browser-Tabs" !important;
}
#toggle_nav-bar > label:before {
content: "Navigation" !important;
}
#navigator-toolbox #titlebar {
order:0;
}
#navigator-toolbox #toolbar-menubar {
order:1;
}
#navigator-toolbox #TabsToolbar {
order:2;
#navigator-toolbox #nav-bar {
order:3;
}
#navigator-toolbox #PersonalToolbar {
order:4;
}
#navigator-toolbox[barsAuto]:not([custommode]) {
z-index : 100 !important;
position : relative !important;
}
#navigator-toolbox[barsAuto]:not(:-moz-lwtheme, [custommode]) {
background-color : var(--toolbar-bgcolor) !important;
background-image : var(--toolbar-bgimage) !important;
}
#navigator-toolbox[barsAuto]:-moz-lwtheme:not([custommode]) {
background-color : var(--lwt-accent-color) !important;
background-image : var(--lwt-header-image, var(--lwt-additional-images)) !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[notShown] {
order: 10;
transition : all 0.3s ease 0s;
height : 5px;
cursor : alias;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape:not([notShown]) {
display : none;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-box-escape[allAuto] {
margin-block-end : -5px;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-box-escape[allAuto] {
height : 0;
margin-block-end : 0;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]) {
margin-block-end : 0;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox[barsAuto]:not([inFullscreen], [custommode]):hover {
margin-block-end : calc(var(--barshide-height) * -1px);
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] {
margin-block-start : calc(var(--ttlhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] {
margin-block-start : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]) > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
order : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #TabsToolbar[barAuto] {
order : 1;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #TabsToolbar:not([barAuto]) {
order : 1;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover > #titlebar[barsAuto] #toolbar-menubar:not([barAuto]),
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto] {
order : 2;
}
#navigator-toolbox:not([inFullscreen], [custommode]) #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]) #PersonalToolbar[barAuto] {
margin-block-start : calc(var(--barhide-height) * -1px) !important;
transition : all 0.3s ease 0s !important;
opacity : 0 !important;
}
#navigator-toolbox:not([inFullscreen], [custommode]):hover #toolbar-menubar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #TabsToolbar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #nav-bar[barAuto],
#navigator-toolbox:not([inFullscreen], [custommode]):hover #PersonalToolbar[barAuto] {
margin-block-start : 0 !important;
opacity : 1 !important;
}
`;
let ucuri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(uccss));
let ucsss = Cc['@mozilla.org/content/style-sheet-service;1']
.getService(Ci.nsIStyleSheetService);
ucsss.loadAndRegisterSheet(ucuri, ucsss.AGENT_SHEET);
} catch (e) { };
})();
// beim Start eingestellt
window.addEventListener('MozAfterPaint', toolbarsset, { once: true });
// Anzeige von #TabsToolbar und Navigationsleiste mit ESC-Taste erzwingen
document.addEventListener('keydown', function (event) {
if (event.keyCode == 27) navescape();
});
// Doppelklicken Sie auf die Leiste, wenn alles gelöscht ist, um sie wiederherzustellen
document.getElementById('nav-box-escape').addEventListener('dblclick', navescape);
function navescape() {
document.getElementById('nav-bar').setAttribute('collapsed', 'false');
document.getElementById('nav-bar').removeAttribute('barAuto');
document.getElementById('TabsToolbar').setAttribute('collapsed', 'false');
document.getElementById('TabsToolbar').removeAttribute('barAuto');
}
// Änderung des Attributwerts der Symbolleiste (anpassen, ausblenden)
function toolbarFlag(aEvent) {
let barelm = aEvent.target;
let attribute = aEvent.attributeName;
// Deaktivieren Sie die Anzeige der Tab-Leiste beim Hinzufügen von Tabs
if ((barelm.id == 'TabsToolbar')
&& (attribute == 'collapsed')
&& !(barelm.hasAttribute('collapsed'))) {
barelm.setAttribute('collapsed', aEvent.oldValue);
}
toolbarsset();
}
function toolbarsset() {
let boxelm = document.getElementById('navigator-toolbox');
let ttlbar = document.getElementById('titlebar');
let escbox = document.getElementById('nav-box-escape');
let barelm, hidingAttr, barheight, hasShown;
let barshide = 0, barsAuto = false, custommode = false, notShown = true;
let ttlhide = 0, tbarsAuto = false, allAuto = false;
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
if (hasShown = (barelm.getAttribute(hidingAttr) == 'true')) barelm.removeAttribute('barAuto');
barheight = barelm.clientHeight;
if (barelm.hasAttribute('barAuto')) {
barsAuto = true;
allAuto = true;
barelm.style.setProperty("--barhide-height", barheight);
barshide += barheight;
if ((toolbar == 'toolbar-menubar') || (toolbar == 'TabsToolbar')) {
tbarsAuto = true;
ttlhide += barheight;
}
} else {
if (!hasShown) notShown = false;
barelm.style.setProperty("--barhide-height", 0);
}
if (barelm.hasAttribute('customizing')) custommode = true;
}
if (barsAuto) boxelm.setAttribute('barsAuto', 'true');
else boxelm.removeAttribute('barsAuto');
if (tbarsAuto) ttlbar.setAttribute('barsAuto', 'true');
else ttlbar.removeAttribute('barsAuto');
if (custommode) boxelm.setAttribute('custommode', 'true');
else boxelm.removeAttribute('custommode');
if (notShown) {
escbox.setAttribute('notShown', 'true');
if (allAuto) escbox.setAttribute('allAuto', 'true');
else escbox.removeAttribute('allAuto');
} else {
escbox.removeAttribute('notShown');
}
boxelm.style.setProperty("--barshide-height", barshide);
ttlbar.style.setProperty("--ttlhide-height", ttlhide);
}
// Menüerstellung
function autoHideToolbarsPopupShowing(aEvent) {
let popup = aEvent.target;
if (popup != aEvent.currentTarget) return;
while (popup.firstChild) popup.removeChild(popup.firstChild); // übersichtliches Menü
let toolbarsid = ['toolbar-menubar', 'TabsToolbar', 'nav-bar', 'PersonalToolbar'];
let barelm, hidingAttr;
for (let toolbar of toolbarsid) {
barelm = document.getElementById(toolbar);
hidingAttr = (barelm.getAttribute('type') == 'menubar') ? 'autohide' : 'collapsed';
let menuitem = MozXULElement.parseXULToFragment(`
<menuitem id="toolbarauto-${toolbar}" toolbarId="${toolbar}" type="checkbox"
label="${barelm.getAttribute('toolbarname')}"
checked="${(barelm.getAttribute('barAuto') == 'true')}"
disabled="${(barelm.getAttribute(hidingAttr) == 'true')}"
oncommand="autoHideToolbar(event);" />
`);
popup.append(menuitem);
}
}
// Automatische Prüfung des Öffnens/Schließens des Menüs
function autoHideToolbar(aEvent) {
let eventelm = aEvent.target;
let barid = eventelm.getAttribute('toolbarId');
let barelm = document.getElementById(barid);
if (eventelm.getAttribute('checked') == "true") {
barelm.setAttribute('barAuto', 'true');
} else {
barelm.removeAttribute('barAuto');
}
}
Alles anzeigen
Vielen Dank.
Gern geschehen
Besser du nimmst das oben geänderte Skript, weil es diesen Eintrag/Bezeichnung nicht mehr gibt.
Hallo milupo, das habe ich mal gemacht
Danke. Ehrlich gesagt, so richtig komme ich mit order noch nicht klar, links/rechts, oben/unten, Nummerierung.
so richtig komme ich mit
So wie ich das verstehe, verschiebst du etwas nach links/unten mit Minus.
Ohne Minus nach rechts/oben:
Die Zahlen und Vorzeichen haben nichts mit einer Richtung zu tun. Es ist wirklich so einfach, wie man es liest: order heißt übersetzt Reihenfolge. Elemente mit niedrigerer Zahl kommen vor Elementen mit höherer Zahl. Ob die Zahlen nun negativ oder positiv sind, spielt keine Rolle, ebenso wenig was für Zahlen verwendet werden. Die Zahlen haben nur in Relation zueinander eine Bedeutung.
2002Andreas, Sören Hentzschel Danke.
order gilt ja nur für Flexboxen. Die Angabe display: flex kann, soviel ich weiß, weggelassen werden. Irgendwo habe ich mal gelesen, dass es auch eine order-Eigenschaft gibt, die die Werte horizontal bzw. vertical hat. Ich weiß aber nicht mehr, wo ich das gelesen habe.
Die Zahlen und Vorzeichen haben nichts mit einer Richtung zu tun.
Hallo Sören, danke für die Erklärung
order gilt ja nur für Flexboxen. Die Angabe display: flex kann, soviel ich weiß, weggelassen werden.
Für Flexboxen und Grid-Elemente. Die Angabe display: flex kann man weglassen, wenn das Element bereits eine Flexbox ist. Ansonsten ist block der Standard-Wert für display, damit ohne Unterstützung für order.
Irgendwo habe ich mal gelesen, dass es auch eine order-Eigenschaft gibt, die die Werte horizontal bzw. vertical hat. Ich weiß aber nicht mehr, wo ich das gelesen habe.
Das muss etwas anderes gewesen sein. Bei order geht es um die Reihenfolge, das ist immer unabhängig von der Richtung. Wenn es in Zusammenhang mit der Flexbox war, ging es vielleicht darum, ob die Elemente einer Flexbox horizontal oder vertikal angeordnet werden. Das wäre dann flex-direction mit den Werten row und column.
Ah, danke.
Das wäre dann flex-direction mit den Werten row und column.
Ja, ich glaube das war es. flex-flow habe ich auch noch gefunden, scheint irgendwie ähnlich zu flex-direction zu sein.
Die Eigenschaft flex-flow ist eine sogenannte Shorthand-Eigenschaft, die flex-direction und flex-wrap in einer Eigenschaft kombiniert. Beispielsweise wäre flex-flow: row wrap identisch zu flex-direction: row plus flex-wrap: wrap.
Ah, danke, nun sehe ich einiges klarer.
Hallo zusammen, Hallo milupo .
Ich verwende dieses Script hier:
// ==UserScript==
// @name Show addon details in about:addons
// @include main
// ==/UserScript==
if (typeof window === "undefined" || globalThis !== window) {
this.EXPORTED_SYMBOLS = ["AboutAddonsVerboseChild"];
ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
try {
ChromeUtils.registerWindowActor("AboutAddonsVerbose", {
child: {
moduleURI: __URI__,
events: {
DOMDocElementInserted: {},
},
},
matches: ["about:addons"],
});
} catch (e) {Cu.reportError(e);}
this.AboutAddonsVerboseChild = class extends JSWindowActorChild {
handleEvent({type}) {
if (type !== "DOMDocElementInserted") return;
const win = this.contentWindow;
const doc = win.document;
doc.addEventListener("view-loaded", () => {
const addons = doc.querySelectorAll(".addon-name");
for (let addon of addons) {
const addonId = addon.querySelector("a")?.href.slice("addons://detail/".length);
if (addonId) AddonManager.getAddonByID(addonId).then(result => {
const {version, updateDate} = result;
const info = doc.createElement("span");
info.style.fontSize = "1rem";
info.style.fontStyle = "normal";
info.style.fontWeight = "900";
info.style.marginInlineEnd = "8px";
info.textContent = `${version} - ${updateDate.toLocaleDateString("de-DE")}`;
addon.insertAdjacentElement("afterend", info);
}).catch(err => Cu.reportError(err));
}
});
}
};
}
else {
try {
const fileHandler = Services.io.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
const scriptFile = fileHandler.getFileFromURLSpec(Components.stack.filename);
const resourceHandler = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
if (!resourceHandler.hasSubstitution("about-addons-verbose-ucjs")) {
resourceHandler.setSubstitution("about-addons-verbose-ucjs", Services.io.newFileURI(scriptFile.parent));
}
ChromeUtils.import(`resource://about-addons-verbose-ucjs/${scriptFile.leafName}?${scriptFile.lastModifiedTime}`);
} catch (e) {Cu.reportError(e)}
}
Alles anzeigen
in Zeile 8 steht:
ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
die Datei AddonManager.jsm gibt es ja nicht mehr. Wenn ich das umändere auf
AddonManager.sys.mjs diese Datei gibt es, geht es nicht mehr, genau so wie wenn ich diese Zeile entferne.
Konsole sagt die Importregel müsste angepasst werden. Nur wie?
Hast Du / Ihr eine Idee?
Mfg.
Endor
Ihr eine Idee?
Hallo Endor.
Hier sieht das so aus in Fx 129:
und so in Fx 128:
oder fehlt da etwas
Wenn ich das umändere auf
AddonManager.sys.mjs diese Datei gibt es, geht es nicht mehr, genau so wie wenn ich diese Zeile entferne
Hallo Endor, verwende mal ChromeUtils.defineESModuleGetter, ansonsten ChromeUtils.importESModule.
In Zeile 52 bin ich mir nicht ganz Sicher, dort steht ChromeUtils.import, Das würde ich in ChromeUtils.importESModule ändern, allerdings wird an der Stelle kein Modul eingelesen.
In Zeile 12 muss noch moduleURI in esModuleURI geändert werden.
Aber im Moment weiß ich auch noch nicht, woran man sieht, dass das Skript funktioniert.
Anscheinend muss es auch ein Benutzerskript about-addons-verbose.uc.js oder so ähnlich geben, das in Zeile 52 eingelesen wird. Oder ist das der Name dieses Skriptes? Dann sollte es aber auch ganz oben angegeben werden, sonst funktioniert das Skript nicht, wenn man es unter einem anderen Namen abspeichert.