Vielleicht wäre es möglich, wenn Endor durchgehend chrome://-Grafiken angeben könnte. Diese würden wie Base64-Grafiken sofort funktionieren. Und im Kommentar schreibt man dann, dass gesonderte Grafiken mit file:/// angegeben werden sollen, dabei könnte man ein Beispiel angeben. Dabei sollten m. E. nur absolute Pfade angegeben werden, mal davon abgesehen, dass die relativen Pfade nicht immer funktionieren. Aber wenn da ein Nutzer irgendetwas verschiebt, wird die Grafik dann immer noch gefunden.
Prima Idee!
Was Dateipfade angeht, haben wir da nicht schon verschiedene Versionen für einen quasi automatisierten Pfad in den jeweiligen Profilordner/chrome/icons?
V.a. Mira_Belle hat dazu schon öfters diverse Lösungen geliefert.
Zum Beispiel:
// Browser-Konsole Button Test #3xy
(function() {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
CustomizableUI.createWidget({
id: 'consoler_button',
type: 'custom',
defaultArea: CustomizableUI.AREA_NAVBAR,
onBuild: function(aDocument) {
let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
var buttonicon = "LettersK-1.png"
let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
var props = {
id: 'consoler_button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: 'Browser-Konsole',
tooltiptext: 'Browser-Konsole',
style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) + '");'
//style: 'list-style-image: url("chrome://browser/skin/translations.svg");'
};
for (var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
document.getElementById('consoler_button').addEventListener('click', event => {
if (event.button === 0) {
konsolero();
}
});
function konsolero() {
var document = event.target.ownerDocument;
if (!document.getElementById('menu_browserConsole')) {
let { require } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs", {});
require("devtools/client/framework/devtools-browser");
};
document.getElementById('menu_browserConsole').click();
};
})();
Alles anzeigen
In Zeile 12 gibt man den Namen des eigenen Icons an (in Chrome/icons); man müsste dann nur noch den style Eintrag in Zeile 19/20 auswählen.
Edit: besseres Code Beispiel