Den Inspector und die Konsole nutze ich, die anderen gar nicht. Wäre schon schön, wenn zumindest einer von beiden immer gleich im Vordergrund ist - dann habe ich immerhin eine 50:50 Chance
Ich habe sogar schon etwas zusammengeschustert. Das Skript funktioniert fast. Die Konsole wird aufgerufen, aber ich habe Probleme mit dem Symbol in der Symbolleiste. Da wird zwar irgendwie eine Schaltfläche angelegt, das Symbol erscheint auch kurz (habe das Netzwerksymbol belassen), verschwindet aber sofort wieder.
Code
// Erstellt von milupo auf der Basis von folgendem Skript des Nutzers aborix. Vielen Dank an aborix.
// https://www.camp-firefox.de/forum/viewtopic.php?p=1110338#p1110338
(function() {
if (!window.gBrowser)
return;
const pref = 'ucjs.openWebconsole';
if (window.__SSi == 'window0') {
if (!Services.prefs.prefHasUserValue(pref)) {
Services.prefs.setBoolPref(pref, false);
};
CustomizableUI.createWidget({
id: 'open-webconsole-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 attributes = {
id: 'open-webconsole-button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
label: 'Webkonsole',
tooltiptext: 'Webkonsole',
oncommand: 'Services.prefs.setBoolPref("ucjs.openWebconsole", \
!Services.prefs.getBoolPref("ucjs.openWebconsole"))',
on: Services.prefs.getBoolPref(pref)
};
for (let a in attributes) {
toolbaritem.setAttribute(a, attributes[a]);
};
return toolbaritem;
}
});
let css = '\
@-moz-document url("chrome://browser/content/browser.xul") { \
#open-webconsole-button[on="true"] { \
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAQCAYAAAAI0W+oAAACAklEQVR4AWMYmcBirgUjEPNCMTcQ88HY1LRE0HW5azMQX3db7nbLZZnLVedlzh+B+DEQ33Jc6pgPVMNFqSVsdovtlnqt8fp04suJ/yDsvsr9R+jm0H8gdunp0n+2C22/WUy3yAQqZyRkmB4eHAm06D3I0NVfVv9f9mXZf4/VHt+TDyT/A/FXfVn1v/h08Q+7hXbnDToMrPGZxcLGznYclyP+///PJCEqwXDp9yUGZlZmhj+//4DEGH79/cXwCQhBQFZGlv3mk5sKHFwc6xgZ8Xiq6WHTf3y4+0X3/4nvJ4Jx7+ve/66rXL9H7on8B+QjixPEDGln076nncGN86/m/2l53fIfhBufNf53XuX8PXhX8D9kseyL2b9AavFhBrtldhts5ttswoat5lvtt15k/T3rZtb/0mel/4seFf13XOn43W+n3z8QH4TjTsf9t5xv+cNynuUdIL6FC8NCUBAbVopXUrNcZPnAb7/fn5T7Kf+T7yb/t1tu991ju8e/1Iep/5PvJP93Wuv0w3Ku5XoRSxEVUWtRBVyYYBK3XGgZY7XY6p3DOoePDhsc3lkusPxptczqr+NGx3cOax0+AOWfqOWo2UEdx4gHEy4V9Nr09Az7DDOBuNCw1zDXZJrJdCBdZNBlkKAYp2gMVCYGxKwMVAIsQMwJxFxQzAelOYCYmWHEAQBYCXtUy+zB6gAAAABJRU5ErkJggg==) \
} \
#open-webconsole-button[on="false"] { \
list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAQCAYAAAAI0W+oAAACgElEQVR4AeWTb0gTYRzHn/1tLqRkriALwt4PRCAk6J2wqWCM3cl2hzungBJqCiHhKwmgsVcBYQRmgo4CiFNTp7OMKDMJ9irCpRKlW4BeOYZ3293u6ffYBscxsHrrFz5wPL/P737Pj9tM6MSE9/kMQGWR0//nHD+kapHj7gKfFzs6krFg8NOs339V7y2FQt2x9vavwHcgOc+y/dBr/9sh1rlAYOplV1cGJxKYEA+FpEmv9xaULVp3MRjk3/b1KcTZiERUuMzhU6+3B0qGci926fDDoJ9HQ5aXsRqL4eXOTnHO78clwLEhCGzBJ4aH88TD8TjeCIclGJZ46PFc07/XbLVa3yNNMMZGh9OJ5O1tZDaZkKIo5AxlJSkqiOI7SVEOwmtrTlB3oIBUWUY4m0UkF2pqTqW2ti5fsdmeGw26pfZHR7Ge7Pg4zk9NHXE4MYHjHCc+aW0dAP0sYAf+bMQw/MfBwTx4Wr8sZiGdlsiNtbFVVFiqHQ4TgiiFAkKqiopOHjjUumQjBTYquft7ezIEmnSJBQL8NE3PlOApauVFW5uYGhnBmUgEC+EwXmLZ8t8Iej90d+eJR9gYGsLTFCVBfRNIajG7o9Eb0FOFirlZX+9019Yu/UinL16qrjaRTTBsJOVya1Kh8EVW1d17q6vnQf1GzslGciaDFHjeTaVyKsYL99fXbxuNRgUdl1mKYudoWlhhmIPXDCPMUFRurLm5F0oO4AxQCRjmafrZAk2Lb1hWeMUwv6Bv505Dw/XixQ06yv/jHzQ2uh43NfUAA2MeTy/ncrmOfgiaTPt8dZMtLf3EeeR2cz11dfVwfA6woH+MGagA7EVMZRyLpm4rOicgvwHOip5P4wfdQAAAAABJRU5ErkJggg==) \
} \
}';
let cssUri = Services.io.newURI('data:text/css,' + encodeURIComponent(css), null, null);
let SSS = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
SSS.loadAndRegisterSheet(cssUri, SSS.AGENT_SHEET);
};
let item;
setTimeout(() => {
item = document.getElementById('menuitem_webconsole');
if (!item) {
let { require } = Cu.import('resource://devtools/shared/Loader.jsm', {});
require('devtools/client/framework/devtools-browser');
item = document.getElementById('menuitem_webconsole');
};
if (Services.prefs.getBoolPref(pref)) {
item.click();
};
}, 1000);
function tabOpenWebconsole(event) {
setTimeout(() => {
if (gBrowser.selectedTab == event.target) {
item.click();
};
}, 100);
};
if (Services.prefs.getBoolPref(pref)) {
gBrowser.tabContainer.addEventListener('TabOpen', tabOpenWebconsole, true);
};
let prefChange = {
observe: function() {
document.getElementById('open-webconsole-button').setAttribute('on',
Services.prefs.getBoolPref(pref));
if (Services.prefs.getBoolPref(pref)) {
gBrowser.tabContainer.addEventListener('TabOpen', tabOpenWebconsole, true);
} else {
gBrowser.tabContainer.removeEventListener('TabOpen', tabOpenWebconsole, true);
};
}
};
Services.prefs.addObserver(pref, prefChange, false);
window.addEventListener('unload', function() {
Services.prefs.removeObserver(pref, prefChange);
});
})();
Alles anzeigen
EDIT: Oha! Im Nightly funktioniert mein Werk! Da schau her. Wer hätte es geglaubt!