Gibt es eine Möglichkeit, dass die Netzwerkanalyse in jedem neuen Fenster/Tab automatisch geöffnet ist? Ich habe danach gesucht, aber leider nichts dazu gefunden :traurig:
Netzwerkanalyse automatisch geöffnet in jedem neuen Fenster/Tab
-
Zitronella -
26. April 2019 um 19:05 -
Erledigt
-
-
"Netzwerkanalyse" läuft doch in einem eigenen Bereich/Fenster (wenn so eingestellt) der Entwicklerwerkzeuge!? Ausserdem muss ja die entsprechende Seite neu dafür geladen werden - und die hat wiederum ein eigenes Fenster/Bereich, das ist ja seit geraumer Zeit strikt getrennt. (also jeder Tab hat seine eigene Entwicklerumgebung)
-
ich hatte gehofft, dass man dies evtl. durch einen about:config Eintrag umstellen könnte, so dass es automatisch in jedem neuen Fenster/Tab geöffnet ist.
-
Eine Einstellung in about:config gibt es dafür nicht. Man muss dazu auch ehrlicherweise sagen, dass es um Entwicklerwerkzeuge geht und nicht einmal Entwickler so arbeiten. Außerdem haben geöffnete Entwicklerwerkzeuge einen negativen Einfluss auf die Ladezeit, was noch ein Argument dafür ist, wieso von Mozilla sowas eher nicht zu erwarten ist.
Per WebExtension ist das auch nicht möglich. Wenn es überhaupt möglich ist, dann kann es nur über ein Script gehen. Aber da kann ich nicht helfen.
-
und nicht einmal Entwickler so arbeitensondern wie? Gibt es effektivere Methoden? Welche sind das, kannst du dazu noch etwas sagen und ggf. einen Tipp geben?
geöffnete Entwicklerwerkzeuge einen negativen Einfluss auf die LadezeitDas stimmt, habe ich auch schon gemerkt, mir ist dadurch auch schon einige Male Firefox "eingefroren"
Wenn es überhaupt möglich ist, dann kann es nur über ein Script gehen. Aber da kann ich nicht helfenok, dann hoffe ich mal, dass das hier ein findiger Scriptschreiber liest und evtl. eine Lösung hat
-
Teste das folgende Skript. Es funktioniert voerst nur bei im Vordergrund geöffneten Tabs.
Code
Alles anzeigen(function() { if (!window.gBrowser) return; let item; setTimeout(() => { item = document.getElementById('menuitem_netmonitor'); if (!item) { let { require } = Cu.import('resource://devtools/shared/Loader.jsm', {}); require('devtools/client/framework/devtools-browser'); item = document.getElementById('menuitem_netmonitor'); }; item.click(); }, 1000); gBrowser.tabContainer.addEventListener('TabOpen', function(event) { setTimeout(() => { if (gBrowser.selectedTab == event.target) { item.click(); }; }, 100); }, true); })();
-
wow, sehr cool :klasse: Das klappt wunderbar
Dass es so schnell eine Lösung gibt, hätte ich nicht gedacht. :oSchön wäre noch ein Button, der die Funktion an und ab schaltet. Aber das muss nicht unbedingt sein, wenns zu kompliziert wird. Ich bin mit dieser Lösung auch schon sehr zufrieden. Vielen Dank aborix.
-
sondern wie? Gibt es effektivere Methoden? Welche sind das, kannst du dazu noch etwas sagen und ggf. einen Tipp geben?
Üblicherweise nutzen Entwickler die Entwicklerwerkzeuge dann, wenn sie diese brauchen, und haben sie nicht permanent geöffnet. Natürlich hat man die Werkzeuge schon auch mal über einen längeren Zeitraum offen, aber das dann in dem Tab, in dem die Seite geöffnet ist, an der man arbeitet, nicht in sämtlichen Tabs. Ist ja nicht so, dass wenn man an einer Webseite arbeitet, keine anderen Tabs öffnet. Ich entwickle mindestens 40 Stunden pro Woche Webseiten und habe in schätzungsweise 95 Prozent dieser Zeit die Entwicklerwerkzeuge in nur einem einzigen Tab oder sogar gar keinem offen, und ganz selten mal in zwei Tabs, wenn ich mal was vergleichen will, aber niemals in mehr. Und 99 Prozent meiner Arbeit mit den Werkzeugen spielen sich im Inspektor sowie der Konsole ab, den übrigen Prozent teilen sich Webspeicher, Barrierefreiheit und Netzwerkanalyse.
Ich verstehe ehrlich gesagt auch überhaupt nicht den Anwendungsfall, wieso man die Werkzeuge in sämtlichen Tabs brauchen sollte. Ich glaube, dass dein Bedarf daran sehr Entwickler-untypisch ist. Was nicht heißt, dass es keinen Anwendungsfall geben würde. Du wirst schon deine Gründe dafür haben. Aber darum kann ich dir hier auch keinen Tipp geben, weil ich den Sinn bisher nicht verstehe. Aber mit einem Script konnte dir ja eh auch schon gedient werden.
-
oh ja, das kann man auch nicht verstehen wenn man den Anwendungsfall nicht weiß und in meinem Arbeitsprofil würde ich dieses Skript auch nicht verwenden.
Also kurze Erklärung: Wie du vielleicht weißt, bin ich immer mal wieder auf der Suche nach schädlichen Erweiterungen im Netz unterwegs um diese dann zu melden und sperren zu lassen.Dafür verwende ich natürlich ein gesondertes Firefox-Profil und in gesicherter Umgebung, da ich in diesem Profil auf so ziemlich alles klicke was nicht bei drei auf den Bäumen ist, also ich verhalte mich dort absichtlich so, wie man es nicht machen sollte, aber viele machen. Das heißt ich klicke auch Werbung an (habe da natürlich keine Werbeblocker installiert) und treibe mich auf Seiten rum, die viele Weiterleitungen und auch PopUps bzw. neue Seiten oder Tabs öffnen. Ich habe zwar auch in diesem Profil in den Einstellungen "Pop-up-Fenster blockieren" aktiviert, trotzdem öffnen sich bei manchen Klicks neue Fenster (oft in kleinerer Ausführung als mein standardmäßige maximierte Fenster) und genau für diese Fenster oder Tabs möchte ich von Anfang an die Netzwerkanalyse sehen, da ich dann von Anfang an genauer die aufgerufenen Seiten im Quelltext analysieren kann.
Das war übrigens auch der Grund dieser Anfrage Netzwerkanalyse bei Um/Weiterleitung in einem Tab
-
Teste dieses Skript. Die Grafiken können natürlich andere sein.
Code
Alles anzeigen(function() { if (!window.gBrowser) return; const pref = 'ucjs.openNetmonitor'; if (window.__SSi == 'window0') { if (!Services.prefs.prefHasUserValue(pref)) { Services.prefs.setBoolPref(pref, false); }; CustomizableUI.createWidget({ id: 'open-netmonitor-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-netmonitor-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Netzwerkanalyse', tooltiptext: 'Netzwerkanalyse', oncommand: 'Services.prefs.setBoolPref("ucjs.openNetmonitor", \ !Services.prefs.getBoolPref("ucjs.openNetmonitor"))', 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-netmonitor-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-netmonitor-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_netmonitor'); if (!item) { let { require } = Cu.import('resource://devtools/shared/Loader.jsm', {}); require('devtools/client/framework/devtools-browser'); item = document.getElementById('menuitem_netmonitor'); }; if (Services.prefs.getBoolPref(pref)) { item.click(); }; }, 1000); function tabOpenNetmonitor(event) { setTimeout(() => { if (gBrowser.selectedTab == event.target) { item.click(); }; }, 100); }; if (Services.prefs.getBoolPref(pref)) { gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); }; let prefChange = { observe: function() { document.getElementById('open-netmonitor-button').setAttribute('on', Services.prefs.getBoolPref(pref)); if (Services.prefs.getBoolPref(pref)) { gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); } else { gBrowser.tabContainer.removeEventListener('TabOpen', tabOpenNetmonitor, true); }; } }; Services.prefs.addObserver(pref, prefChange, false); window.addEventListener('unload', function() { Services.prefs.removeObserver(pref, prefChange); }); })();
-
Perfekt aborix, vielen vielen Dank, das klappt hervorragend :klasse:
-
Bitte, gern geschehen.
-
aborix Es ist mal wieder soweit, leider funktioniert dieses Script seit Firefox 87 nicht mehr
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; const pref = 'ucjs.openNetmonitor'; if (window.__SSi == 'window0') { if (!Services.prefs.prefHasUserValue(pref)) { Services.prefs.setBoolPref(pref, false); }; CustomizableUI.createWidget({ id: 'open-netmonitor-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-netmonitor-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Netzwerkanalyse', tooltiptext: 'Netzwerkanalyse', oncommand: 'Services.prefs.setBoolPref("ucjs.openNetmonitor", \ !Services.prefs.getBoolPref("ucjs.openNetmonitor"))', 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.xhtml") { \ #open-netmonitor-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-netmonitor-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_netmonitor'); if (!item) { let { require } = Cu.import('resource://devtools/shared/Loader.jsm', {}); require('devtools/client/framework/devtools-browser'); item = document.getElementById('menuitem_netmonitor'); }; if (Services.prefs.getBoolPref(pref)) { item.click(); }; }, 1000); function tabOpenNetmonitor(event) { setTimeout(() => { if (gBrowser.selectedTab == event.target) { item.click(); }; }, 100); }; if (Services.prefs.getBoolPref(pref)) { gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); }; let prefChange = { observe: function() { document.getElementById('open-netmonitor-button').setAttribute('on', Services.prefs.getBoolPref(pref)); if (Services.prefs.getBoolPref(pref)) { gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); } else { gBrowser.tabContainer.removeEventListener('TabOpen', tabOpenNetmonitor, true); }; } }; Services.prefs.addObserver(pref, prefChange, false); window.addEventListener('unload', function() { Services.prefs.removeObserver(pref, prefChange); }); })();
kannst du da irgendwas machen? Das wäre wirklich großartig *bibber+hoff*
Und wenn ich unverschämter Weise noch einen Wunsch äußern dürfte: Wäre es auch machbar, dass wenn ich einen Link klicke mit Mittelklick oder Strg+Klick, und dieser sich dann in einem neuen Tab öffnet, dass dann auch, (wenn aktiviert) sich das Netzwerkanalystetool gleich mit öffnet, damit ich dort dann auch die Verbindungen sehen kann?
-
Nur kurz zur Ursache, keine Lösung: Das Script funktioniert offensichtlich so, dass es einen Klick auf den Menü-Eintrag #menuitem_netmonitor simuliert. Diesen Menü-Eintrag gibt es nicht mehr.
-
Teste mal:
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; const pref = 'ucjs.openNetmonitor'; if (window.__SSi == 'window0') { if (!Services.prefs.prefHasUserValue(pref)) { Services.prefs.setBoolPref(pref, false); }; CustomizableUI.createWidget({ id: 'open-netmonitor-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let attributes = { id: 'open-netmonitor-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Netzwerkanalyse', tooltiptext: 'Netzwerkanalyse', oncommand: 'Services.prefs.setBoolPref("ucjs.openNetmonitor", \ !Services.prefs.getBoolPref("ucjs.openNetmonitor"))', 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.xhtml") { \ #open-netmonitor-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-netmonitor-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); }; const { gDevToolsBrowser } = ChromeUtils.import('resource://devtools/shared/Loader.jsm') .require('resource://devtools/client/framework/devtools-browser'); function tabOpenNetmonitor(event) { setTimeout(() => { if (gBrowser.selectedTab == event.target) { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); }; }, 100); }; if (Services.prefs.getBoolPref(pref)) { setTimeout(() => { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); }, 1000); gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); }; let prefChange = { observe: function() { let prefVal = Services.prefs.getBoolPref(pref); document.getElementById('open-netmonitor-button').setAttribute('on', prefVal); if (prefVal) { gBrowser.tabContainer.addEventListener('TabOpen', tabOpenNetmonitor, true); } else { gBrowser.tabContainer.removeEventListener('TabOpen', tabOpenNetmonitor, true); }; } }; Services.prefs.addObserver(pref, prefChange, false); window.addEventListener('unload', function() { Services.prefs.removeObserver(pref, prefChange); }); })();
-
Super, vielen vielen Dank, es klappt wieder wie vorher
Es funktioniert nur bei im Vordergrund geöffneten Tabs (das war vorher aber ja auch so, wie du selbst geschrieben hast). Meinst du, du könntest das auch noch ändern damit es sich auch bei im Hintergrund geöffneten Tabs funktioniert?
Wenn das zu viel Arbeit macht, bin ich allerdings auch schon hiermit sehr zufrieden.
-
Teste wieder:
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; const pref = 'ucjs.openNetmonitor'; if (window.__SSi == 'window0') { if (!Services.prefs.prefHasUserValue(pref)) { Services.prefs.setBoolPref(pref, false); }; CustomizableUI.createWidget({ id: 'open-netmonitor-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let attributes = { id: 'open-netmonitor-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Netzwerkanalyse', tooltiptext: 'Netzwerkanalyse', oncommand: 'Services.prefs.setBoolPref("ucjs.openNetmonitor", \ !Services.prefs.getBoolPref("ucjs.openNetmonitor"))', 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.xhtml") { \ #open-netmonitor-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-netmonitor-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); }; const { require } = ChromeUtils.import('resource://devtools/shared/Loader.jsm'); const { gDevToolsBrowser } = require('devtools/client/framework/devtools-browser'); const { gDevTools } = require('devtools/client/framework/devtools'); const { TargetFactory } = require('devtools/client/framework/target'); const { Toolbox } = require('devtools/client/framework/toolbox'); gDevToolsBrowser.selectToolCommand = async function selectToolCommand(win, toolId, startTime) { if (gDevToolsBrowser._isAboutDevtoolsToolbox(win)) { const toolbox = gDevToolsBrowser._getAboutDevtoolsToolbox(win); toolbox.selectTool(toolId, "key_shortcut"); return; } const target = await TargetFactory.forTab(win.gBrowser.selectedTab); const toolbox = gDevTools.getToolbox(target); const toolDefinition = gDevTools.getToolDefinition(toolId); if (toolbox && (toolbox.currentToolId == toolId || (toolId == "webconsole" && toolbox.splitConsole))) { toolbox.fireCustomKey(toolId); if (toolDefinition.preventClosingOnKey || toolbox.hostType == Toolbox.HostType.WINDOW) { if (!toolDefinition.preventRaisingOnKey) { toolbox.raise(); } } else { //toolbox.destroy(); } gDevTools.emit("select-tool-command", toolId); } else { gDevTools.showToolbox(target, toolId, null, null, startTime, undefined, !toolDefinition.preventRaisingOnKey) .then(newToolbox => { newToolbox.fireCustomKey(toolId); gDevTools.emit("select-tool-command", toolId); }); } } function tabOpenNetmonitor(event) { setTimeout(() => { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); }, 100); }; if (Services.prefs.getBoolPref(pref)) { setTimeout(() => { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); }, 1000); gBrowser.tabContainer.addEventListener('TabSelect', tabOpenNetmonitor, true); }; let prefChange = { observe: function() { let prefVal = Services.prefs.getBoolPref(pref); document.getElementById('open-netmonitor-button').setAttribute('on', prefVal); if (prefVal) { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); gBrowser.tabContainer.addEventListener('TabSelect', tabOpenNetmonitor, true); } else { gBrowser.tabContainer.removeEventListener('TabSelect', tabOpenNetmonitor, true); }; } }; Services.prefs.addObserver(pref, prefChange, false); window.addEventListener('unload', function() { Services.prefs.removeObserver(pref, prefChange); }); })();
-
Danke. ja, das klappt zwar, dass wohl die Netzwerkanalyse im Hintergrund Tab offen ist, allerdings findet dort kein loggen statt, dies findet nur statt wenn man den Tab in den Vordergrund holt. Dann ist es allerdings meist zu spät, da (wenn man nicht schnell genug ist) die Seite dann schon oft vollständig geladen ist.
-
Ich werde schauen, ob sich das Aufzeichnen auch dann machen lässt, wenn der Tab im Hintergrund ist.
Nach dem Öffnen eines Fensters muss kurz gewartet werden, bis die Netzwerkanalyse geöffnet werden kann; es sind 1000 ms, das steht im Skript aus #15 in Zeile 66, im Skript aus #17 in Zeile 95. Ebenso beim Öffnen eines Tabs, hier sind es 100 ms, das steht in Z. 60 bzw. Z. 89. Vielleicht kommst du auch mit weniger aus.
-
Es ist mir bis jetzt nicht gelungen, beim Öffnen eines Tabs im Hintergrund auch gleich die Netzwerkanalyse zu öffnen. Mit folgendem Skript wird der neue Tab kurz in den Vordergrund geholt, die Netzwerkanalyse geöffnet, und dann wieder der alte Tab in den Vordergrund geholt.
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; const pref = 'ucjs.openNetmonitor'; if (window.__SSi == 'window0') { if (!Services.prefs.prefHasUserValue(pref)) { Services.prefs.setBoolPref(pref, false); }; CustomizableUI.createWidget({ id: 'open-netmonitor-button', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let attributes = { id: 'open-netmonitor-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Netzwerkanalyse', tooltiptext: 'Netzwerkanalyse', oncommand: 'Services.prefs.setBoolPref("ucjs.openNetmonitor", \ !Services.prefs.getBoolPref("ucjs.openNetmonitor"))', 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.xhtml") { \ #open-netmonitor-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-netmonitor-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); }; const { gDevToolsBrowser } = ChromeUtils.import('resource://devtools/shared/Loader.jsm') .require('resource://devtools/client/framework/devtools-browser'); function onTabOpen(event) { let selected = false; function onTabSelect() { gBrowser.tabContainer.removeEventListener('TabSelect', onTabSelect, true); gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); selected = true; }; gBrowser.tabContainer.addEventListener('TabSelect', onTabSelect, true); setTimeout(() => { gBrowser.tabContainer.removeEventListener('TabSelect', onTabSelect, true); if (!selected) { let oldTab = gBrowser.selectedTab; gBrowser.selectedTab = event.target; gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()) .then(() => { //setTimeout(() => { gBrowser.selectedTab = oldTab; //}, 50); }); } }, 0); } if (Services.prefs.getBoolPref(pref)) { setTimeout(() => { gDevToolsBrowser.selectToolCommand(window, 'netmonitor', Cu.now()); }, 1000); gBrowser.tabContainer.addEventListener('TabOpen', onTabOpen, true); }; let prefChange = { observe: function() { let prefVal = Services.prefs.getBoolPref(pref); document.getElementById('open-netmonitor-button').setAttribute('on', prefVal); if (prefVal) { gBrowser.tabContainer.addEventListener('TabOpen', onTabOpen, true); } else { gBrowser.tabContainer.removeEventListener('TabOpen', onTabOpen, true); }; } }; Services.prefs.addObserver(pref, prefChange, false); window.addEventListener('unload', function() { Services.prefs.removeObserver(pref, prefChange); }); })();
-