Funktioniert hier einwandfrei mit deinem Skript für die Leiste unten.
(hätte mich auch gewundert wenn nicht)
Hier ditto, funktioniert.
Funktioniert hier einwandfrei mit deinem Skript für die Leiste unten.
(hätte mich auch gewundert wenn nicht)
Hier ditto, funktioniert.
Wenn dann alles Fehlerfrei laufen sollte, werde ich das vorerst Finale JavaScript noch einmal posten
und auf diesen Umstand direkt hinweisen, dass der Skript cache gelöscht werden muss.
Aber nicht etwa manuell löschen, oder?
![]()
Wenn about:support -> Start-Cache löschen, bzw. das Restartscript, oder zur Not Fehlerbehebungsmodus nicht klappen, dann liegt das Problem in diesem Fall u.U. nicht am Script. ![]()
Im neuen Profil(3) hatte ich den Chrome Ordner mit config.js angelegt und darin den Icons Ordner. Danach erst mal zwei Skripte und ein Testversion_1. Nichts hat funktioniert. Nach 3 mal Fehlerbehebungsmodus ging plötzlich alles, auch _1a und _2a. Warum??
Das Problem hatte ich auch schon, wenn auch nicht so extrem.
Cache leeren hatte mit Scripts einige Male nicht ganz funktioniert bei manchen Profilen, einmal Fehlerbehebungsmodus starten hat die Sache dann bei mir erledigt.
Hat mir doch keine Ruhe gelassen. Neues Profil funktioniert und darin arbeiten alle 4 Testversionen einwandfrei !!!
Ich werde also mal Skripte und Codes nacheinander hinzufügen und schauen wann ein Fehler auftritt.
Nur die Meldung
"Unerwarteter Wert matrix(Infinity NaN NaN Infinity 0 0) beim Parsen des Attributs transform. default-browser-red.svg"
ist in der Konsole weiter vorhanden.
Fortschritt, super! ![]()
Wie hast du denn die Scripts in den neuen Profile ans Laufen gebracht, wo lag das Problem?
Die Icon Meldung hab ich auch, vermutlich ist der .svg Code nicht ganz kompatibel/korrekt, funktioniert aber ja.
Elchtest ausgeführt, Fx115esr auf Mac - Resultat wie zu erwarten! ![]()
#1 und #2 funktionieren hier nur im ersten geöffneten Fenster ohne Elch, #1a und #2a funktionieren auch im Elchtest.
(So geht der Elchtest, beschrieben hier und hier).
Keine Konsolenerrors für des Script an sich, nur der CustomizableUI: unable to normalize widget error in allen Varianten, wobei eben #1a/2a trotzdem immer funktionieren.
Auch ein Konsolenerror zu deinem Icon: Unerwarteter Wert matrix(Infinity NaN NaN Infinity 0 0) beim Parsen des Attributs transform. default-browser-red.svg, aber das Icon ist immer sichtbar.
Ok, auch bei mir wird auch bei anderen Javascripts bei Zeilen mit folgendem Inhalt eine Meldung aus geworfen.
document.getElementById('profileschange-button').addEventListener( "click", onClick );
Jedoch funktionieren alle Skripts weiter hin ganz normal
Nur aus Neugierde, gibt es auch eine Fehlermeldung zu document.getElementById...etc, wenn der komplette CSS Teil raus ist? ![]()
Etwa mit sowas wie meiner groben Testversion?
Die Einbindung scheint sich ja minütlich zu ändern. ![]()
Ich kann hier aber mit keiner Scriptversion eine Fehlermeldung provozieren, seit dem Zusatz von document.getElementById('profileschange-button').addEventListener( "click", onClick );.
Allerdings bin ich auf meinem alten Mac jetzt auf 115esr festgenagelt, damit bin ich wohl für eine Weile raus aus dem Thema... ![]()
Der Button ist vorhanden aber keine Reaktion bei Klick.
Hier meine Datei:
CSS Alles anzeigen// JavaScript Document // QuickProfilesChangesButton.uc.js // Source code https://www.camp-firefox.de/forum/thema/136664/?postID=1233148#post1233148 // Mit wichtiger Änderung von Horstmann! // Version 1.10 from August 12, 2023 (function() { if (location.href !== 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'profileschange-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton'); var props = { id: 'profileschange-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', removable: 'true', label: 'Profil zusätzlich starten', accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden tooltiptext: 'Profil NeuTest starten', }; for (var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); } catch(e) { }; let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner und gleich in den entsprechenden Unterordner let ButtonIcon = "ProfilZusatz1.png"; // Name & Dateiendung des anzuzeigenden Symbols! let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService); let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(` #profileschange-button { list-style-image: url("${ProfilePath}/${ButtonIcon}") } #profileschange-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon { width: 30px !important; height: 30px !important; } `), null, null); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); document.getElementById('profileschange-button').addEventListener( "click", onClick ); function onClick(event) { if (event.button != 0){ return; } let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); let arguments = ["-no-remote", "-P", "NeuTest", "-foreground"]; // Profil wird ausgewählt Hier "XXX" den gewünschten Profilnamen eintragen // let arguments = ["-no-remote", "-P"]; // Wer lieber den Profilmanager aufrufen möchte,nutzt diese Zeile! file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation // file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // Pfad zur Firefox-Installation, Dateipfad für Mac User let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); process.init(file); process.run(false, arguments, arguments.length); // Profil wird bestätigt } })();
Ich habe mal dein Script kopiert, und nur den Profilnamen und Iconnamen geändert, sowie den Dateipfad auf Mac umgestellt.
Funktioniert prima .... ![]()
In deinem Konsoleneintrag steht auch nichts über Profil_V110.uc.js.
Ältere Versionen vom Script hast du entfernt?
Alles anzeigenWieder mal ich:
Ich habe bisher die Version aus Beitrag 145 verwendet und war, wie schon geschrieben, sehr zufrieden. Seitdem habe ich nur die Beiträge verfolgt.
Jetzt habe ich mal die neuesten Versionen übernommen und muss folgendes sagen:
Version 1.08 und 1.10 funktionieren bei mir nicht. Button ist da, aber bei Klick keine Reaktion.
Version 1.07 aus Beitrag #230 funktioniert nur einmal. Danach immer die Fehlermeldung.
Keine Ahnung warum das bei mir so ist. Die erforderlichen Personalisierungen habe ich durchgeführt und dreimal geprüft. Das Verhalten ist bei derzeit zwei Profilen der Fall.
Könntest du den problematische Scriptcode mal einstellen?
Evtl. hast du was übersehen; es gibt ja eine neue Zeile mit anzupassen, Zeile 41 in Mira's Script 1.10.
Und was für eine Fehlermeldung meinst du, in der Konsole oder ein Popup Fenster wie das hier?
Nah, wollte es nur nochmal zusätzlich erklären, auf Windows hat man das Problem wahrscheinlich nur sehr selten.
UND, dieser "kleine Bug", den Horstmann beschrieben hatte, tritt also auch unter Windows auf.
Ist jetzt nicht so tragisch, finde ich, denn gedacht war das ja nur, um in einem Testprofil Änderungen auszutesten,
und dann dieses auch wieder zu schließen.
ABER, Menschen sind halt auch im Verhalten so ganz anders, und jeder macht, was er will.
Deshalb habe ich den Code von Horstmann übernommen.
IdR habe ich auch nur Tabs im Spiel in einem Fenster, und der Button ist auch hier nur für ein bestimmtes Testprofil.
Ausserdem schliesse ich unbenutzte Programme normalerweise.
Aber wegen dem beschriebenen Macverhalten kommt es immer mal wieder vor, dass ich das Fenster vom Startprofil schliesse, einfach damit es aus dem Weg ist (gerade auch wenn ich an einem Testprofil rumbastle), während aber das Startprofil/Startinstanz fensterlos im Hintergrund weiterläuft.
Auf dem Mac ist das ein nicht ungewöhnliches Prozedere, deshalb kam das Problem bei mir recht regelmässig vor.
Hat ewig gedauert das zu kapieren, bis ich mich an den anderen Beitrag erinnert habe, wo es ein verwandtes Problem gab... ![]()
Ich habe mich erneut mit dem Thema beschäftigt und bin zu folgendem Ergebnis gekommen:
JavaScript Alles anzeigen(function () { let css = ` tooltip[label*=" "], #tabbrowser-tab-tooltip, .places-tooltip { display: none !important; } #remoteBrowserTooltip{ display: flex !important; } `; let sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); let uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); })();
Vielen Dank, das scheint im Prinzip hier zu funktionieren!
![]()
Allerdings musste ich 2 Änderungen machen, weil einige Tooltips nicht angesprochen waren, und einige Objekte im Überhangsmenü und Erweiterungsmenü ein gestörtes Hoververhalten gezeigt haben (Menü hat sich bei Hover geschlossen).
Also tooltip dazugenommen, tooltip[label*=" "] in tooltip[label] geändert.
Das Überhangsmenü und Erweiterungsmenü scheint beim ersten Öffnen aber immer noch etwas Probleme zu machen, schliessen sich bei Hover. ![]()
Sieht jetzt als Test so aus, mit deinem variierten Code und etwas von Mira_Belle (Dankeschön
)
// browser.chrome.toolbar_tips true
// Test2a
(function () {
let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
tooltip,
tooltip[label],
#tabbrowser-tab-tooltip,
.places-tooltip {
display: none !important;
}
#remoteBrowserTooltip {
display: flex !important;
}
`), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
})();
Alles anzeigen
Soweit ich das jetzt in meinen kurzen Tests festgestellt habe, scheint es zu funktionieren.
Wenn das auch von anderen bestätigt wird, werde ich Horstmann im Skript "verewigen"!
Und bitte auch darum, das Skript dann auch so zu verwenden, inkl. Quellenangabe.
Funktioniert hier auf dem Mac, Danke!
![]()
Ich glaube dass ich einen Mac habe macht das kleine Problem für mich auch offensichtlicher.
Ist es in Windows nicht so, dass durch das Schliessen aller Programm/Instanzfenster dieses Programm/die Instanz beendet wird?
Auf meinem Mac ist das bei den meisten Programmen nicht der Fall, die müssen aktiv beendet werden auch wenn keine Fenster vorhanden sind.
Wenn ich also mit Firefox Instanz A das Profil bzw Instanz B öffne, kann ich das/alle Fenster in Instanz A schliessen, die Instanz A läuft aber weiter im Hintergund, das Icon von Instanz A bleibt auch aktiv im Dock (Win Taskleiste?).
Bei 3 offenen Profilen/Instanzen, aber alle deren Fenster geschlossen, sieht das Dock dann so aus:
Ich kenne Windows kaum, weiss nicht wie das dort funktioniert...
In meinem Fall kann ich also jede Instanz mit Anklicken direkt aufrufen, und es öffnet sich ein Fenster - was aber eben nicht das selbe Fenster ist, das beim ersten Start der jeweiligen Instanz geöffnet wurde --> Button hatte nicht mehr funktioniert.
Ich glaube ich kann mein Problem mit dem Originalscript von Mira_Belle jetzt reproduzieren:
Korrigierte Beschreibung :
Firefox öffnen, das Programm öffnet mit einem Browser Fenster (Fenster A).
Script Button funktioniert; jetzt neues Fenster B öffnen, dann das Fenster A - das erste beim Start geöffnete Fenster - schliessen.
Script Button funktioniert nicht mehr in Fenster B oder anderen Fenstern, sobald Fenster A geschlossen wurde.
Solange das erste beim Programmstart geöffnete Browserfenster offen ist, funktioniert das Script, auch in danach geöffneten zusätzlichen Fenstern, aber nur dann.
Würde mich interessieren, ob jemand anders das auch beobachten kann.
Was mich vage an das hier erinnert hat, und an die Lösung die mal wieder BrokenHeart geliefert hatte. ![]()
Das Problem könnte diese Zeile im Script sein: toolbaritem.onclick = event => onClick(event); . ![]()
Was nach ersten Tests hier zu klappen scheint ist sowas, Icon Name und Profilname etc. anzupassen, wesentliche Änderungen in Zeilen 14 und 31 (- 36):
Nur Test, offizielle Versionen von Mira !
//Test Fix
(function() {
if (location.href !== 'chrome://browser/content/browser.xhtml') return;
try {
CustomizableUI.createWidget({
id: 'Leerprofil_button',
type: 'custom',
defaultArea: CustomizableUI.AREA_NAVBAR,
onBuild: function(aDocument) {
let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
let buttonIcon = "LettersL-1.png";
//toolbaritem.onclick = event => onClick(event);
let props = {
id: 'Leerprofil_button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
removable: 'true',
overflows: 'true',
label: 'Leerprofil',
tooltiptext: 'Leerprofil Button',
style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonIcon) +'");',
};
for (var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
document.getElementById('Leerprofil_button').addEventListener( "click", onClick );
function onClick(event) {
if (event.button == 0)
{
let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
let arguments = ["-foreground", "-no-remote", "-P", "Leerprofil"]; // Profil Name
file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad Windows
//file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox-bin"); // Pfad Mac
let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, arguments, arguments.length); // Profil wird bestätigt
}
}
})();
Alles anzeigen
Kam denn eine der Meldungen neu dazu, als es aufhörte zu funktionieren, oder waren die Fehler alle schon vorher da? Die einzige Stelle im Code, welche unable to normalize widget loggen kann, ist nämlich die Stelle, an der createWidget() aufgerufen wird. Und das sollte ja nur ein einziges Mal pro Script sein. Insofern würde es mich wundern, wenn das direkt mit deinem Problem zusammenhängt.
Der letzte Fehler ist aber wieder der aus dem anderen Script. Bekommst du den gleichen Fehler denn auch vom anderen Script, während das dieses Script hier noch funktioniert?
Soweit ich es beobachten kann - wie gesagt kann ich das Problem leider nicht willentlich verursachen - taucht der Error unable to normalize widget nur mit diesem Script auf.
Die anderen Fehlermeldungen/Warnungen sind immer in der Konsole.
Und das gerade gesehen.
Gibt es denn Fehler in der Konsole, wenn es nicht mehr klappt?
Jetzt hat das Script endlich aufgehört zu funktionieren
; hier der Error in der Konsole:
CustomizableUI: unable to normalize widget hatte ich schon vorher mal in der Konsole gesehen, war mir aber nicht sicher ob es mit dem Script zusammenhängt.
Wie (nachträglich) erwähnt, der Button ist bei mir im Überhangmenü; andere Scripts die ebenfalls dort sind haben das Problem nicht.
Nach wie vor kann ich aber das Problem nicht reproduzieren oder provozieren, es scheint zufällig aufzutauchen.
Der gezeigte Fehler erscheint erst, wenn es nicht mehr geht? Der Fehler kommt aus einem anderen Script. Da ich keine Scripts nutze, weiß ich nicht, ob sich Fehler in einem Script auch auf andere auswirken. Tritt das Problem auch ohne dieses Script auf?
Das ist tatsächlich ein anderesScript das hier immer einen Error erzeugt, aber funktioniert.
Ob das einen Einfluss hat kann ich momentan nicht sagen, muss ich mal testen - nur weigert sich jetzt gerade das Profilbuttonscript aufzuhören zu funktionieren... ![]()
Gibt es denn Fehler in der Konsole, wenn es nicht mehr klappt?
Nichts was ich zuordnen könnte; ich spiele das nochmal durch im Moment, mal schauen ob was Neues auftaucht wenn das Script aufhört zu funktionieren.
Eine kleine Sache habe ich hier noch: idR funktioniert der Button für das zusätzliche Profil mehrfach hintereinander.
Ich kann das Zusatzprofil starten, Änderungen aller Art im Zusatzprofil vornehmen, mit oder ohne Cache löschen das Zusatzprofil neustarten oder beenden oder mit dem Button im Ursprungsprofil neustarten, etc..
Und dann irgendwann geht der Button nicht mehr, bis zu einem Neustart vom Ursprungsprofil.
Ich kann aber absolut nicht nachvollziehen warum, habe alle möglichen Varianten durchprobiert.
Es ist als ob nach einer bestimmten Zeit das Script abschaltet - was aber keinen Sinn macht, oder? ![]()
Hat das sonst noch jemand beobachtet?
Nachtrag: alle anderen Scripts haben das Problem nicht; und der Button sitzt bei mir im Überhangmenü.
aber mein Skript funktioniert einwandfrei
Funktioniert in der Tat ohne Probleme, aber das ↓ verwirrt mich, ist das so korrekt?
tooltiptext: 'Neustart (mit Rechts 2- und Linksklick 0 wird der userChrome.js-Cache geleert)'
Ist ja nur falscher Text für den Tooltip; das Script von Andreas sollte mit Links-Klick einen normalen Neustart machen, mit Mittel- und Rechtskilck einen Neustart + Scriptcache löschen.
Ich muß nochmal auf den Thread zurückkommen. Ich habe Firefox auf Version 117.0b3 upgedatet. Jetzt hat sich zwar an den Menüicons nichts geändert, es ist nun aber der Menütext ganz dicht ohne jeden Abstand an die Icons herangerückt. Wie kriegt man da wieder einen Abstand hin?
Ja, zu dem Schluß bin ich auch gekommen. Ich werde es mit Deiner CSS probieren. Dazu muß ich aber andere Icons beschaffen, denn Deine schwarz/weiß-Icons sind nicht mein Ding. Farbige Icons habe ich in der bisher verwendeten MenuIconPlusCSS. Da muß ich nur die richtigen für jeden Menüpunkt finden. Eine Heidenarbeit.
Wenn der Abstand zwischen einigen Icons und Text das einzige Problem ist, und konstant falsch, kann's doch nicht so schwer sein die Ursache zu finden, im Zweifel mit den Browser Werkzeugen. ![]()
Da werden margins/paddings etc. inklusive der verantwortlichen CSS Dateien angezeigt.
Die Basis von deinem Code scheint kürzlich auch u.a. deswegen up-ge-dated worden zu sein, hast du dir das mal angeschaut?
Generell würde ich mir so einen komplexen Fremdcode aber auch nicht antun, wie oben erwähnt.
Entweder eigenes CSS das man versteht - oder vorgefertigtes CSS, die Finger davon weglassen und dann bei Bedarf nach Updates schauen, wenn denn welche kommen. ![]()