wenn Du etwas Zeit hättest,
Funktioniert einwandfrei in allen weiteren Fenstern, wenn das erste geschlossen wird, incl. privater Modus.
Ersatz Icon wird auch angezeigt.
Getestet mit Win11.
wenn Du etwas Zeit hättest,
Funktioniert einwandfrei in allen weiteren Fenstern, wenn das erste geschlossen wird, incl. privater Modus.
Ersatz Icon wird auch angezeigt.
Getestet mit Win11.
Danke
Wohl möglich, ein Mac-spezifisches Problem?
Dann kümmere ich mich jetzt erst einmal um die anderen Skripte.
Danke
Wohl möglich, ein Mac-spezifisches Problem?
Dann kümmere ich mich jetzt erst einmal um die anderen Skripte.
Was mir aber nicht klar ist, welche Script Version hat denn wer jetzt wie getestet?
Bei mir etwa funktioniert dein Script aus #7 nicht mit Szenario aus #18.
Kann aber tatsächlich ein Mac Problem sein, ich glaub's aber nicht.
Davon abgesehen, was spricht dagegen den Fallback Code nach unten zu setzen?
Ja, es geht um das Skript #7 und Test #18.
Geht bei mir Fehlerfrei.
Davon abgesehen, was spricht dagegen den Fallback Code nach unten zu setzen?
Wenn der Code für den Fallback aus der Funktion onBuild: function(aDocument) { genommen wird,
funktioniert das Skript gar nicht mehr und dem Button, den es ja dennoch gibt, fehlt die Grafik!
Davon abgesehen, was spricht dagegen den Fallback Code nach unten zu setzen?
Wenn der Code für den Fallback aus der Funktion onBuild: function(aDocument) { genommen wird,
funktioniert das Skript gar nicht mehr und dem Button, den es ja dennoch gibt, fehlt die Grafik!
Also der komplette Code von hier funktioniert bei dir nicht (in Zeile 39 bzw 40 halt dein eigenes Icon)?
Der Fallback Code muss generell angepasst werden beim runterkopieren, s. Zeilen 47 und 52, oder halt wie beschrieben in #14.
In deinem Code von #7 gibt es da auch eine Klammer in Zeile 24, die mir Rätsel aufgibt; aber nach meinem Schema hatte ich deinen Code auch zum Laufen gebracht, nur halt immer schön die Klammern und Satzzeichen beachten.
Zum Test habe ich den Code so umgebaut, dass ich auch einen anderen Ordner für Icons auswählen kann. Auch das "Ersatzicon" wird angezeigt. Schau es dir mal bitte an, ob es so zu gebrauchen ist.
// Button_Test.uc.js
// Öffnen des "Profilordners"
(function() {
if (location != "chrome://browser/content/browser.xhtml") return;
try {
CustomizableUI.createWidget({
id: 'buttonTest',
type: 'custom',
onBuild: function(aDocument) {
let toolbaritem = aDocument.createXULElement('toolbarbutton');
let props = {
id: 'buttonTest',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: 'buttonTest',
tooltiptext: 'Profil-Ordner öffnen',
};
for (var p in props) {
toolbaritem.setAttribute(p, props[p]);
}
return toolbaritem;
}
});
} catch(e){}
document.getElementById('buttonTest').addEventListener('click', event => {
if (event.button === 0) {
Services.dirsvc.get("ProfD", Ci.nsIFile).launch();
}
});
// Pfad zum Iconordner
let IconPath = "C:/FoxIcons/";
// Name & Dateiendung des anzuzeigenden Symbols!
let ButtonIcon = "gibtesnicht.png";
// Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
let img = new Image();
img.src = "file:" + IconPath + ButtonIcon;
img.onload = function() {
// Wenn die Grafik geladen werden kann, setze das listStyleImage
document.getElementById('buttonTest').style.listStyleImage = 'url("' + ("file:" + IconPath + ButtonIcon) + '")';
};
img.onerror = function() {
// Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
document.getElementById('buttonTest').style.listStyleImage = 'url("chrome://browser/skin/fxa/avatar-empty.svg")';
};
})();
Alles anzeigen
Oh Herr, lass Hirn regnen
Ich habe vergessen das "Umzubauen".
Habe bei mir einfach nur den Code vom Fallback nach unten kopiert!
Kann ja nicht funktionieren.
Aus toolbaritem.style.listStyleImage = ... muss ja
document.getElementById('profilefolder-ToolBarButton').style.listStyleImage = ... werden
Oh Mann.
Aber ich habe noch eine Farbanpassung für all jene, die unterschiedliche Farben für beide Symbole haben wollen!
Hier mal der ganze Code:
// Button_for_Profilfolder.us.js
// Öffnen des "Profilordners"
(function() {
if (location != "chrome://browser/content/browser.xhtml") return;
try {
CustomizableUI.createWidget({
id: 'profilefolder-ToolBarButton',
type: 'custom',
onBuild: function(aDocument) {
let toolbaritem = aDocument.createXULElement('toolbarbutton');
let props = {
id: 'profilefolder-ToolBarButton',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: 'Profil-Ordner',
tooltiptext: 'Profil-Ordner öffnen',
};
for (var p in props) {
toolbaritem.setAttribute(p, props[p]);
}
return toolbaritem;
}
});
} catch(e){}
document.getElementById('profilefolder-ToolBarButton').addEventListener('click', event => {
if (event.button === 0) {
Services.dirsvc.get("ProfD", Ci.nsIFile).launch();
}
});
// Pfad zum Profilordner
let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
// Pfad in den entsprechenden Unterordner
let IconPath = '/chrome/icons/';
// Name & Dateiendung des anzuzeigenden Symbols!
let ButtonIcon = "user.svg";
// Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
let img = new Image();
img.src = "file:" + ProfilePath + IconPath + ButtonIcon;
img.onload = function() {
// Wenn die Grafik geladen werden kann, setze das listStyleImage
document.getElementById('profilefolder-ToolBarButton').style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';
document.getElementById('profilefolder-ToolBarButton').style.color = '#ff5a79'; // Hier wird die Iconfarbe direkt gesetzt
};
img.onerror = function() {
// Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
document.getElementById('profilefolder-ToolBarButton').style.listStyleImage = 'url("chrome://browser/skin/fxa/avatar-empty.svg")';
document.getElementById('profilefolder-ToolBarButton').style.color = 'red'; // Hier wird die Iconfarbe direkt gesetzt
};
})();
Alles anzeigen
Aber ich habe noch eine Farbanpassung
Hallo Mira.
Sollte ich dich/das falsch verstanden haben, dann sorry.
Aber hier hat das Icon keine andere Farbe, nur der Hintergrund bei hover verändert sich:
Aber hier hat das Icon keine andere Farbe
Hier schon, Andreas.
Hier schon, Andreas.
Hallo FuchsFan.
So sieht das hier aus, wenn das Icon nicht vorhanden ist, bzw. nicht gefunden wurde:
Nur der Hintergrund ändert sich dann hier bei hover
Aber bitte keinen Stress deswegen, ich wollte/habe das Skript nur mal getestet.
Aber bitte keinen Stress deswegen, ich wollte/habe das Skript nur mal getestet.
Ich auch nur.
So sieht das hier aus, wenn das Icon nicht vorhanden ist, bzw. nicht gefunden wurde:
Nur der Hintergrund ändert sich dann hier bei hover
Ohne jetzt tief zu recherchieren, meiner Erinnerung nach benutzt Fx teilweise color als Button Hintergrundfarbe bei hover, bzw. daraus abgeleitet einen Mix mit currentColor, da muss man etwas aufpassen.
Möglicherweise haben Mira und Fuchsfan woanders weiteren CSS Code, der das anders festlegt.
Könnte evtl. mehr Sinn machen statt wie in #27 .style.color = 'red'; => .style.fill = 'red'; zu benutzen; wobei JS Styles gerne mal von so ziemlich allem anderen CSS überschrieben werden.
Oder mal in der userChrome.css #profilefolder-ToolBarButton {fill: red !important;} probieren, oder sowas in der Art.
Edit: bei mir im Testprofil färbt .style.color = 'red' sowohl das Icon als auch den hover Hintergrund.
.style.fill = 'red' funktioniert wie erwartet nur für das Icon.
Edit: bei mir im Testprofil färbt .style.color = 'red' sowohl das Icon als auch den hover Hintergrund.
![]()
.style.fill = 'red' funktioniert wie erwartet nur für das Icon.
Ja, so ist es! Deshalb habe ich es in den Skripten geändert, wo das mit dem Fallback vorkommt.
Aber ich habe noch eine Farbanpassung
Hallo Mira.
Sollte ich dich/das falsch verstanden haben, dann sorry.
Aber hier hat das Icon keine andere Farbe, nur der Hintergrund bei hover verändert sich:
Ja, das habe ich heute im Laufe des Tages auch gemerkt.
Fehler habe ich aber gefixt!
So, da es hier ja hauptsächlich um Fehlerbereinigung eines bestimmten Skriptes geht.
Bzw. dieses als Testobjekt ausgesucht wurde, hier meine derzeitige Version!
// Button_for_Chromefolder.us.js
// Öffnen des "chrome"-Ordners im "Profil"
/* ----------------------------------------------------------------------------------- */
/* Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen */
/* %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons */
/* ----------------------------------------------------------------------------------- */
(function() {
if (location != "chrome://browser/content/browser.xhtml") return;
try {
CustomizableUI.createWidget({
id: 'Open-Chrome-Folder-ToolBarButton',
type: 'custom',
onBuild: function(aDocument) {
let toolbaritem = aDocument.createXULElement('toolbarbutton');
let props = {
id: 'Open-Chrome-Folder-ToolBarButton',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: 'Chrome-Ordner',
tooltiptext: 'Chrome-Ordner öffnen',
};
for (var p in props) {
toolbaritem.setAttribute(p, props[p]);
}
return toolbaritem;
}
});
} catch(e){}
document.getElementById('Open-Chrome-Folder-ToolBarButton').addEventListener('click', () => {
Services.dirsvc.get("ProfD", Ci.nsIFile).launch();
});
// Pfad zum Profilordner
let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
// Pfad in den entsprechenden Unterordner
let IconPath = '/chrome/icons/';
// Name & Dateiendung des anzuzeigenden Symbols!
let ButtonIcon = "folder.svg";
// Erstelle ein img-Element, um zu überprüfen, ob die Grafik geladen werden kann
let img = new Image();
img.src = "file:" + ProfilePath + IconPath + ButtonIcon;
img.onload = function() {
// Wenn die Grafik geladen werden kann, setze das listStyleImage
document.getElementById('Open-Chrome-Folder-ToolBarButton').style.listStyleImage = 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")';
document.getElementById('Open-Chrome-Folder-ToolBarButton').style.webkitAnimationFillMode = '#619dbf'; // Hier wird die Iconfarbe direkt gesetzt
};
img.onerror = function() {
// Wenn die Grafik nicht geladen werden kann, verwende das Fallback-Icon
document.getElementById('Open-Chrome-Folder-ToolBarButton').style.listStyleImage = 'url("chrome://global/skin/icons/warning.svg")';
document.getElementById('Open-Chrome-Folder-ToolBarButton').style.fill = 'red'; // Hier wird die Iconfarbe direkt gesetzt
};
})();
Alles anzeigen
Hier habe ich eines der Scripte, dass ich mir angepasst habe. Die Icon-Lösung habe ich neu eingefügt, weil sie hier in einem zentralen Verzeichnis (auf C:) hinterlegt sind. Teste es bitte mal, ob es nun deinen Vorstellungen entspricht. Fehler werden auch nicht angezeigt.
Hm, hier wird leider kein Button erzeugt, es wird auch nichts in der Konsole angezeigt.
hier wird leider kein Button erzeugt
Mit eigenem Pfad und Icon sieht das hier so aus:
Mit eigenem Pfad und Icon sieht das hier so aus:
Mittlerweile ist der Button da, aber ohne Icon, siehst Du da ↓ einen Fehler?
// Button_Verzeichnisse.uc.js
// Linksklick öffnet Profilordner
// Mittelklick öffnet Installationsordner
// Rechtsklick öffnet Ordner chrome
(function() {
if (!window.gBrowser)
return;
try {
CustomizableUI.createWidget({
id: 'buttonOrdner',
type: 'custom',
defaultArea: CustomizableUI.AREAS,
onBuild: function(aDocument) {
var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
var props = {
id: 'buttonOrdner',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
removable: true,
// Name im AnpassungFenster
label: 'Ordner aufrufen',
// Name bei MausHover wenn in Symbolleiste
tooltiptext: 'Links Profilordner / Mitte Installationsordner / Rechts Ordner chrome',
// style: 'list-style-image: url("file:///C:/FoxIcons2/ordner2.png")',
style: 'list-style-image: url("file:///H:/Profile/Firefox/Fx57-H-Default/chrome/red-circle-icon.png")',
};
for (var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
document.getElementById('buttonOrdner').addEventListener('click', event => {
if (event.button == 0) {
uProfMenu.prefDirOpen('ProfD');
}
if (event.button == 1) {
uProfMenu.prefDirOpen('CurProcD');
}
if (event.button == 2) {
Services.dirsvc.get("UChrm", Ci.nsIFile).launch();
}
});
})();
Alles anzeigen
Grml, was so ein kleiner dummer Fehler, es fehlt icons/ im Pfad, so anrichten kann.
siehst Du da ↓ einen Fehler?
Ich kann keinen erkennen
Und wenn du es zwecks Test mal mit einem Fx Icon versuchst:
style: 'list-style-image: url("chrome://browser/skin/fxa/avatar-empty.svg")',
Wird das angezeigt?
Ich kann keinen erkennen
Ich schon, siehe oben, aber den konntest Du natürlich nicht erkennen, aber danke fürs drüber schauen.