Beiträge von Mitleser
-
-
Zeile 7 + 24 auskommentiert!
Du hast Zeile 7 auskommentiert; also gibt es keine Variablendeklinaton! Das dass nicht klappt sollte dir klar sein.
-
Und wie ich schon einmal schrieb, schau in die Konsole,
da wird mit Sicherheit ein Fehler angezeigt!Die Fehlermeldung hätte ich gerne. Als Screen?
-
Wieso macht man so einen Blödsinn, sich als Nutzer veralteter Browser auszugeben?
Ja , stimmt. Ein Update des AddOns mit aktuellen Browsersignaturen wäre wünschenswert.
wenn man Browserentwickler ist.
Du meintest sicherlich Websiteentwickler, Webdesigner oder auch Onlinedesigner.
-
Mit welcher Firefox Version hast du das denn getestet? Laut deinem User-Agenten hattest du eben Fx 130.
Selbstverständlich 136.01 und jetzt sollte der UserAgent Windows/Chrome128 anzeigen...
EDIT: du testet auf 137/138; nun verstehe ich auch deine Frage...Hier läufts auf 136.01, eine andere Testmöglichkeit habe ich leider nicht
EDIT2: Das AddOn ist hier kontraproduktiv, deshalb habe ich dieses Forum auf die Whitelist gesetzt, mein Fehler... -
-
Und wie ich schon einmal schrieb, schau in die Konsole,
da wird mit Sicherheit ein Fehler angezeigt!Hier nicht. Ist aber auch egal...Hier funzt es so mit allen Verschiebescripts
(PanelUI-button, nav-bar-overflow-button, unified-extensions-button) einwandfrei. Hättest Du mal einen Screen von der Fehlermeldung?JavaScript
Alles anzeigen//B_Move_Extensions.uc.js (function() { if (!window.gBrowser) return; /* Konfiguration */ const origID = "unified-extensions-button",// ID des originalen Buttons label = "Erweiterungen", tooltiptext = "Erweiterungen-Button"; /* Ende Konfiguration */ const menuButton = document.getElementById(origID), buttonID = 'ucjs_' + origID; if (!CustomizableUI.getPlacementOfWidget( buttonID )) { try { CustomizableUI.createWidget({ id: buttonID, type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = buttonID; toolbaritem.className = 'chromeclass-toolbar-additional'; // toolbaritem.setAttribute('label', label); return toolbaritem; } }); } catch(e) { menuButton.style.display = 'none'; return; }; }; setTimeout(function() { document.getElementById(buttonID).appendChild(menuButton); menuButton.setAttribute('consumeanchor', buttonID); menuButton.setAttribute('label', label); menuButton.setAttribute('tooltiptext', tooltiptext); }, 0); }());
-
Das spielt keine Rolle, wie oft die Variable verwendet wird. Wenn du die Variablen-Deklaration in Zeile 7 löschst, was du ja machst, wenn du die Zeile auskommentierst, hast du einen Script-Fehler, sobald du diese verwendest.
Ja, ist klar.
Beide Zeilen (24 und 37) bewirken das gleiche. Also könnte eine gelöscht werden?
Genau Zeile 24 (siehe Beitrag #49) führt bei mir eben zum Verschwinden des Buttons...???
Wenn gelöscht, dann eben nicht; ich empfinde das als schon als sehr merkwürdig.Ich beziehe mich auf diesen Post:
Ich hatte auch zwischenzeitlich wieder einen Zustand, wo der Button wie beim TE ganz verschwunden war.
-
Danke für den Tip! Und lies bitte nochmal #49.
-
Die Variable wird zweimal angewendet: In Zeile 24 sowie in Zeile 37.
-
Auch die 'Verschiebescripte' haben noch einen Fehler: Wenn das label in Zeile 7 auskommentiert ist, verschwindet der Button. Das liegt wiederum am label in Zeile 24. Wird die Zeile gelöscht, funzt das Script auch ohne Label in Zeile 7 einwandfrei.
Referenz für die Zeilennummern:JavaScript
Alles anzeigen//B_Move_Extensions.uc.js (function() { if (!window.gBrowser) return; /* Konfiguration */ const origID = "unified-extensions-button",// ID des originalen Buttons label = "Erweiterungen", tooltiptext = "Erweiterungen-Button"; /* Ende Konfiguration */ const menuButton = document.getElementById(origID), buttonID = 'ucjs_' + origID; if (!CustomizableUI.getPlacementOfWidget( buttonID )) { try { CustomizableUI.createWidget({ id: buttonID, type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = buttonID; toolbaritem.className = 'chromeclass-toolbar-additional'; toolbaritem.setAttribute('label', label); return toolbaritem; } }); } catch(e) { menuButton.style.display = 'none'; return; }; }; setTimeout(function() { document.getElementById(buttonID).appendChild(menuButton); menuButton.setAttribute('consumeanchor', buttonID); menuButton.setAttribute('label', label); menuButton.setAttribute('tooltiptext', tooltiptext); }, 0); }());
-
Lieber milupo , der .tab-audio-button befindet sich im shadow-root-Bereich. Also gibt es nur eine Lsg. über userChromeShadow.css; ein Teil befindet sich aber außerhalb dieses Bereiches; eine Lsg. die beide Bereiche bedient ist also: Die oben genannte Datei (so kompliziert sich der text auch liest!) in eine .us.js-Datei einzugliedern. Hast du was Besseres?
-
-
Gibts auch für das schon was?
Wenn dir das alles zu kompliziert ist, setze doch das css einfach in eine .uc.js, ungefähr so (Damit wäre der gesamte Quelltext an einem Ort):
CSS
Alles anzeigen// TabIconSound.css.uc.js (function() { if (location != 'chrome://browser/content/browser.xhtml') return; const // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ IconPath1 = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'css', 'image', 'ff_svg')), // Pfad zum 1.Ordner der das .svg-Symbol (mit: fill="context-fill" fill-opacity="context-fill-opacity") beinhaltet. IconPath2 = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'css', 'image')), // Pfad zum 2.Ordner der das .svg-Symbol (mit: fill="context-fill" fill-opacity="context-fill-opacity") beinhaltet. IconPath3 = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum 3.Ordner der das .svg-Symbol (mit: fill="context-fill" fill-opacity="context-fill-opacity") beinhaltet. // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ const sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); const uri = Services.io.newURI('data:text/css;charset=utf-8,' + encodeURIComponent(` .tab-audio-button { #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) { &[soundplaying]::part(button) { background-image: url("${IconPath2}/16_volume-up_moz.svg") !important; } } } .tab-audio-button:hover { #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) { &[soundplaying]::part(button) { background-image: url("${IconPath2}/16_volume-off_moz.svg") !important; } } } .tab-audio-button { #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) { &[muted]::part(button) { background-image: url("${IconPath2}/16_volume-off_moz.svg") !important; } } } .tab-audio-button:hover { #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) { &[muted]::part(button) { background-image: url("${IconPath2}/16_volume-up_moz.svg") !important; } } } .tab-audio-button { &[soundplaying]::part(button) { fill: green !important; } } .tab-audio-button { &[muted]::part(button) { fill: red !important; } } .tab-audio-button:hover { &[soundplaying]::part(button) { fill: red !important; background-color: lightgray !important; } } .tab-audio-button:hover { &[muted]::part(button) { fill: green !important; background-color: lightgray !important; } } #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) .tabbrowser-tab:not([pinned]):not([crashed]):is([soundplaying], [muted], [activemedia-blocked]) { .tab-content .tab-icon-image { display: none; } .tab-audio-button { --button-size-icon-small: 18px !important; --button-min-height-small: 18px !important; margin: auto 2px auto -20px !important; transform: translateY(-2px); } } `), null, null); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); })(); /*Der Letzte räumt den Quellcode auf*/
Beispielicons:
-
Ich bin hier auf eine interessante Lsg. gestoßen;
CSS
Alles anzeigen/* hide favicon when audio is playing (like FF 135) */ #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) .tabbrowser-tab:not([pinned]):not([crashed]):is([soundplaying], [muted], [activemedia-blocked]) { .tab-content .tab-icon-image { display: none; } .tab-audio-button { --button-size-icon-small: 18px !important; --button-min-height-small: 18px !important;/**/ margin: auto 2px auto -20px !important; transform: translateY(-1.5px); } }
Nach etwas Justierung ersetzt der .tab-audio-button das .tab-icon-image ganz ohne 'geflacker', Die Farbe muß - wie gehabt - angepasst werden.
-
Mir zumindest ist nichts bekannt.
Das ist das ist einzige Script, dass nach dem Update auf 136 bei mir nicht mehr funktioniert.
RIP 03/2025 -
auf 136.0 upgedatet
Diesen Button habe ich mal für mich selbst geschrieben, funzt auch in 136:
EDIT: zeitgleicher Post mit Andreas; damit ist dieser Beitrag überflüssig.
JavaScript
Alles anzeigen// JavaScript Document // B_Quit_Firefox.uc.js // Das Script erstellt einen Button, der ein einzelnes Firefox-Fenster separat schließt (Linksklick) oder Firefox beendet (Mittel-/Rechtsklick). Das .svg-Icon kann - je nach Hover-Zustand - mit zwei unterschiedlichen Farben gefüllt werden [fill]. Beim Überfahren des Buttons rotiert das Icon um 180deg [rotate: 180deg]. // Für das mitgelieferte Icon als .svg-Datei mit [moz-context-properties] ändert das Script die Einstellung [svg.context-properties.content.enabled] in about:config auf 'true'. (function() { if (!window.gBrowser) return; const // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ id = 'quit-button', // Id des neuen Buttons label = 'Fenster schließen/Firefox beenden', // Bezeichnung des neuen Buttons tooltiptext = 'Fenster schließen/Firefox beenden\n\nLinksklick: Fenster schließen\nMittel-/Rechtsklick: Firefox beenden', // Icon------------------------------------------------------- icon = 'quit-16.svg', // [Name.Dateiendung] des anzuzeigenden Symbols iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet iconColOu = 'red', // Farbe des Icons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOu keine Funktion) iconColOv = 'currentColor', // Farbe des Icons beim Überfahren des Buttons (nur .svg-Datei mit [moz-context-properties], bei anderen Icons hat const iconColOv keine Funktion) // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)), cl = '.toolbarbutton-icon'; //const end if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) { Services.prefs.setBoolPref('svg.context-properties.content.enabled', true ); } //---- CustomizableUI.createWidget({ id: id, type: 'button', defaultArea: CustomizableUI.AREA_NAVBAR, label: label, tooltiptext: tooltiptext, onCreated: (button) => { button.style.MozContextProperties = 'fill, stroke, fill-opacity'; button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")'; button.style.fill = iconColOu; //over button.addEventListener('mouseover', () => { button.style.fill = iconColOv; button.querySelector(cl).style.rotate = '180deg'; }); //out button.addEventListener('mouseout', () => { button.style.fill = iconColOu; button.querySelector(cl).style.rotate = '0deg'; }); //click button.addEventListener('click', () => { if (event.button === 0) { event.target.ownerGlobal.BrowserCommands.tryToCloseWindow(event); } else if (event.button === 1 || event.button === 2) { event.target.ownerGlobal.goQuitApplication(event); } }); } }); //---- })();
-
-
-
Danke, auch für die Erklärung...