Beiträge von aborix
-
-
Der Mehr-Werkzeuge-Button und der Button in der Suchleiste funktionieren jetzt auch und die Vor- und Zurück-Buttons funktionieren einwandfrei. Das automatische Schließen der Menü- und Mehr-Werkzeuge-Panels beim Mouseout funktioniert nicht immer.
Code
Alles anzeigen// ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup // @compatibility Firefox 30.0+ // @author GOLF-AT, modified by gsf & aborix // @version 2019.05.05 // ==UserScript== (function() { const showDelay = 200; const hideDelay = 500; var overElt = null; var PopElt = null; var PopTimer = null; var HideTimer = null; var AlwaysPop = false; var searchBar = null; if (window.BrowserSearch) searchBar = BrowserSearch.searchBar; // Fx support all of CSS syntax: # indicates id, . represents class, or [id='demo'] var BlackIDs = []; // whitelist, and trigger action var whiteIDs = [ { id: 'omnibar-defaultEngine', popMemu: 'omnibar-engine-menu', run: function(overElem) { document.getElementById('omnibar-in-urlbar').click(0); } }, { id: 'ucjs_zoom_statuslabel', popMemu: 'ucjs_zoom-context', run: null }, { id: 'UserScriptLoader-icon', popMemu: 'UserScriptLoader-popup', run: null }, { id: 'readLater', popMemu: 'readLater-popup', run: null //function(overElem) {PopElt.popup();} }, { id: 'foxyproxy-toolbar-icon', popMemu: 'foxyproxy-toolbarbutton-popup', run: null } ]; var whitesInx = -1; var popupPos = ['after_start', 'end_before', 'before_start', 'start_before']; var menuPanelID = 'appMenu-popup'; var downPanelID = 'downloadsPanel'; var widgetPanelID = 'customizationui-widget-panel'; var overflowPanel = document.getElementById('widget-overflow'); if (overflowPanel) { overflowPanel.addEventListener('popupshowing', function() { this.open = true; }); overflowPanel.addEventListener('popuphiding', function() { this.open = false; }); } function IsWidgetBtn(elt) { try { return elt.hasAttribute('widget-id') && elt.getAttribute('widget-type') == 'view'; } catch(e) { return false; } } function IsSearchBtn(elt) { return (elt && elt.className == 'searchbar-search-button') || whitesInx == 0; } function IsPanelMenuBtn(elt) { return elt && elt.id == 'PanelUI-menu-button'; } function IsDownloadBtn(elt) { return elt && elt.localName == 'toolbarbutton' && elt.id == 'downloads-button'; } function IsButton(elt) { return elt && (elt.localName == 'button' || elt.localName == 'toolbarbutton'); } function IsMenuButton(elt) { return IsPanelMenuBtn(elt) || IsDownloadBtn(elt) || IsWidgetBtn(elt) || (IsButton(elt) && getPopupMenu(elt)); } function IsOverflowButton(elt) { return elt && elt == document.getElementById('nav-bar-overflow-button'); } function IsUrlbarDropmarker(elt) { try { return elt.getAttribute('anonid') == 'historydropmarker'; } catch(e) { return false; } } function IsAutoComplete(elt) { try { return elt.getAttribute('type').substr(0, 12) == 'autocomplete'; } catch(e) { return false; } } function isBlackNode(elt) { return BlackIDs.some(function(css) { try { var nodes = document.querySelectorAll(css); } catch(e) { return false; } for (var node of nodes) { if (node == elt) return true; } return false; }) } function getPopupNode(node) { if (whitesInx > -1 && PopElt) return PopElt; if (IsSearchBtn(node)) return node; if (IsOverflowButton(node)) return node; var elt, isPop, s; for (; node != null; node = node.parentNode) { if (node == PopElt) return node; isPop = false; // Node isn't Popup node s = node.localName; if (s == 'menupopup' || s == 'popup' || s == 'menulist' || IsAutoComplete(node) || IsMenuButton(node)) { isPop = true; } else if (s == 'dropmarker') { if (node.getAttribute('type') == 'menu') { elt = node.parentNode; if (elt.firstChild.localName == 'menupopup') isPop = true; } else if (IsUrlbarDropmarker(node)) isPop = true; } else if (s == 'menu') { isPop = (node.parentNode.localName == 'menubar'); } else if (IsButton(node)) { for (elt = node; (elt = elt.nextSibling) != null;) { if (elt.localName == 'dropmarker' && elt.boxObject.width > 0 && elt.boxObject.height > 0) break; } if (elt) break; } if (isPop) break; } if (PopElt && node) { // Whether node is child of PopElt for (elt = node.parentNode; elt != null; elt = elt.parentNode) { if (elt == PopElt) return PopElt; } } return isPop ? node : null; } function getPopupMenu(elt) { if (whitesInx > -1 && PopElt) return PopElt; var nodes = elt ? elt.ownerDocument.getAnonymousNodes(elt) || elt.childNodes : null; if (nodes) { for (let node of nodes) { if (node.localName == 'menupopup') return node; } } var s = elt.getAttribute('popup'); return s ? document.getElementById(s) : null; } function getPopupPos(elt) { var x, y, pos, box; for (pos = 0, x = elt.boxObject.screenX, y = elt.boxObject.screenY; elt != null; elt = elt.parentNode) { if (elt.localName == 'window' || !elt.parentNode) break; else if (elt.localName != 'toolbar' && elt.localName != 'hbox' && elt.localName != 'vbox'); else if (elt.boxObject.height >= 3 * elt.boxObject.width) { if (elt.boxObject.height >= 45) { pos = 9; break; } } else if (elt.boxObject.width >= 3 * elt.boxObject.height) { if (elt.boxObject.width >= 45) { pos = 8; break; } } } try { box = elt.boxObject; x = (pos & 1) ? (x <= box.width / 2 + box.screenX ? 1 : 3) : (y <= box.height / 2 + box.screenY ? 0 : 2); } catch(e) { x = 0; } return popupPos[x]; } function AutoPopup() { PopTimer = null; if (!overElt) return; if (whitesInx > -1 && PopElt && whiteIDs[whitesInx].run) { whiteIDs[whitesInx].run(overElt); return; } if (!PopElt) PopElt = overElt; if (overElt.localName == 'dropmarker') { if (IsUrlbarDropmarker(overElt)) overElt.click(); else PopElt.showPopup(); } else if (overElt.localName == 'menulist') { overElt.open = true; } else if (IsPanelMenuBtn(overElt)) { PanelUI.show(); PopElt = document.getElementById(menuPanelID); } else if (IsWidgetBtn(overElt)) { var cmdEvent = document.createEvent('xulcommandevent'); cmdEvent.initCommandEvent('command', true, true, window, 0, false, false, false, false, null); overElt.dispatchEvent(cmdEvent); PopElt = document.getElementById(widgetPanelID); } else if (IsDownloadBtn(overElt)) { PopElt = document.getElementById(downPanelID); DownloadsPanel.showPanel(); } else if (IsSearchBtn(overElt)) { searchBar.openSuggestionsPanel(); } else if (IsOverflowButton(overElt)) { if (!overflowPanel.open) { overElt.click(); PopElt = overflowPanel; } } else { PopElt = getPopupMenu(overElt); try { let Pos = getPopupPos(overElt); PopElt.removeAttribute('hidden'); PopElt.openPopup(overElt, Pos, 0, 0, false, false, null); } catch(e) { PopElt = null; } } } function HidePopup() { try { if (overElt.localName == 'dropmarker') { try { PopElt.parentNode.closePopup(); } catch(e) { } } else if (overElt.localName == 'menulist') PopElt.open = false; else if (IsDownloadBtn(overElt)) DownloadsPanel.hidePanel(); //else if (IsPanelMenuBtn(overElt) || IsWidgetBtn(overElt)) else if (PopElt && PopElt.hidePopup) PopElt.hidePopup(); else if (PopElt.popupBoxObject) PopElt.popupBoxObject.hidePopup(); else if (IsSearchBtn(overElt)) searchBar.textbox.closePopup(); else if (IsPanelMenuBtn(overElt)) PanelUI.hide(); } catch(e) { } HideTimer = null; overElt = PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; var popNode, n = e.originalTarget; whitesInx = -1; // gsf :some,forEach,filter等数组遍历方法接受第二个参数,表作用域this,可不用call了 if (n.hasAttribute('id') && whiteIDs.some(function(k,i,me) { if (k.id == n.id) { overElt = n; whitesInx = i; PopElt = document.getElementById(k.popMemu); PopTimer = setTimeout(AutoPopup, showDelay); return true; } })) return; popNode = getPopupNode(e.originalTarget); if (!popNode || (popNode && popNode.disabled) || isBlackNode(popNode)) { MouseOut(); return; } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if (IsAutoComplete(popNode)) return; for (var elt = popNode; elt != null; elt = elt.parentNode) { if (elt.localName == 'menupopup' || elt.localName == 'popup') return; } } catch(e) { } if (PopElt && popNode == PopElt && PopElt != overElt) return; if (overElt && popNode != overElt) HidePopup(); overElt = popNode; PopElt = null; PopTimer = setTimeout(AutoPopup, showDelay); } function MouseOut() { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt) HideTimer = window.setTimeout(HidePopup, hideDelay); } window.addEventListener('mouseover', MouseOver, false); })();
-
-
Neue Version, es funktioniert jetzt zumindest teilweise wieder. Der Mehr-Werkzeuge-Button z.B. funktioniert nicht und die Vor- und Zurück-Buttons nicht immer. Bitte testet und sagt, was nicht funktioniert.
Code
Alles anzeigen// ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup // @compatibility Firefox 30.0+ // @author GOLF-AT, modified by gsf & aborix // @version 2015.05.04 // ==UserScript== (function() { const showDelay = 200; const hideDelay = 500; var overElt = null; var PopElt = null; var PopTimer = null; var HideTimer = null; var AlwaysPop = false; var searchBar = null; if (window.BrowserSearch) searchBar = BrowserSearch.searchBar; // by gsf, 支持Fx的CSS所有语法: #表示id,. 表示class,或[id='demo'] // Fx support all of CSS syntax: # indicates id, . represents class, or [id='demo'] var BlackIDs = []; // by gsf, 白名单,及触发动作 // whitelist, and trigger action var whiteIDs = [{ id: 'omnibar-defaultEngine', popMemu: 'omnibar-engine-menu', run: function(overElem) { document.getElementById('omnibar-in-urlbar').click(0); } }, { id: 'ucjs_zoom_statuslabel', popMemu: 'ucjs_zoom-context', run: null }, { id: 'UserScriptLoader-icon', popMemu: 'UserScriptLoader-popup', run: null }, { id: 'readLater', popMemu: 'readLater-popup', run: null //function(overElem) {PopElt.popup();} }, { id: 'foxyproxy-toolbar-icon', popMemu: 'foxyproxy-toolbarbutton-popup', run: null }]; var whitesInx = -1; var popupPos = ['after_start', 'end_before', 'before_start', 'start_before']; var menuPanelID = 'PanelUI-popup'; var downPanelID = 'downloadsPanel'; var widgetPanelID = 'customizationui-widget-panel'; function IsWidgetBtn(elt) { try { return elt.hasAttribute('widget-id') && elt.getAttribute('widget-type') == 'view'; } catch(e) { return false; } } function IsSearchBtn(elt) { try { return elt.getAttribute('anonid') == 'searchbar-search-button' || whitesInx === 0; } catch(e) { return false; } } function IsNewMenuBtn(elt) { try { return elt.id == 'PanelUI-menu-button'; } catch(e) { return false; } } function IsDownloadBtn(elt) { try { return elt.localName == 'toolbarbutton' && elt.id == 'downloads-button'; } catch(e) { return false; } } function IsButton(elt) { try { return elt.localName == 'button' || elt.localName == 'toolbarbutton'; } catch(e) { return false; } } function IsMenuButton(elt) { return IsNewMenuBtn(elt) || IsDownloadBtn(elt) || IsWidgetBtn(elt) || (IsButton(elt) && getPopupMenu(elt)); } function IsAutoComplete(elt) { try { return elt.getAttribute('type').substr(0, 12) == 'autocomplete'; } catch(e) { return false; } } function isBlackNode(elt) { return BlackIDs.some(function(css) { try { var nodes = document.querySelectorAll(css); } catch(e) { return false; } for (var node of nodes) { if (node == elt) return true; } return false; }) } function getPopupNode(node) { if (whitesInx > -1 && PopElt) return PopElt; var elt, isPop, s; for (; node != null; node = node.parentNode) { if (node == PopElt) return node; isPop = false; // Node isn't Popup node s = node.localName; if (s == 'menupopup' || s == 'popup' || s == 'menulist' || IsAutoComplete(node) || IsMenuButton(node)) isPop = true; else if (s == 'dropmarker') { if (node.getAttribute('type') == 'menu') { elt = node.parentNode; if (elt.firstChild.localName == 'menupopup') isPop = true; } else if (node.classList.contains('urlbar-history-dropmarker')) isPop = true; } else if (s == 'menu') isPop = (node.parentNode.localName == 'menubar'); else if (IsButton(node)) { for (elt = node; (elt = elt.nextSibling) != null;) { if (elt.localName == 'dropmarker' && elt.boxObject.width > 0 && elt.boxObject.height > 0) break; } if (elt) break; } if (isPop) break; } if (PopElt && node) { // Whether node is child of PopElt for (elt = node.parentNode; elt != null; elt = elt.parentNode) { if (elt == PopElt) return PopElt; } } return isPop ? node : null; } function getPopupMenu(elt) { if (whitesInx > -1 && PopElt) return PopElt; var nodes = elt ? elt.ownerDocument.getAnonymousNodes(elt) || elt.childNodes : null; if (nodes) { for (let node of nodes) { if (node.localName == 'menupopup') return node; } } var s = elt.getAttribute('popup'); return s ? document.getElementById(s) : null; } function getPopupPos(elt) { var x, y, pos, box; for (pos = 0, x = elt.boxObject.screenX, y = elt.boxObject.screenY; elt != null; elt = elt.parentNode) { if (elt.localName == 'window' || !elt.parentNode) break; else if (elt.localName != 'toolbar' && elt.localName != 'hbox' && elt.localName != 'vbox'); else if (elt.boxObject.height >= 3 * elt.boxObject.width) { if (elt.boxObject.height >= 45) { pos = 9; break; } } else if (elt.boxObject.width >= 3 * elt.boxObject.height) { if (elt.boxObject.width >= 45) { pos = 8; break; } } } try { box = elt.boxObject; x = (pos & 1) ? (x <= box.width / 2 + box.screenX ? 1 : 3) : (y <= box.height / 2 + box.screenY ? 0 : 2); } catch(e) { x = 0; } return popupPos[x]; } function AutoPopup() { PopTimer = null; if (!overElt) return; if (whitesInx > -1 && PopElt && whiteIDs[whitesInx].run) { whiteIDs[whitesInx].run(overElt); return; } !PopElt && (PopElt = overElt); if (overElt.localName == 'dropmarker') { if (overElt.classList.contains('urlbar-history-dropmarker')) overElt.click(); else PopElt.showPopup(); } else if (overElt.localName == 'menulist') { overElt.open = true; } else if (IsNewMenuBtn(overElt)) { PanelUI.show(); PopElt = document.getElementById(menuPanelID); } else if (IsWidgetBtn(overElt)) { var cmdEvent = document.createEvent('xulcommandevent'); cmdEvent.initCommandEvent('command', true, true, window, 0, false, false, false, false, null); overElt.dispatchEvent(cmdEvent); PopElt = document.getElementById(widgetPanelID); } else if (IsDownloadBtn(overElt)) { PopElt = document.getElementById(downPanelID); DownloadsPanel.showPanel(); } else if (IsSearchBtn(overElt)) { searchBar.openSuggestionsPanel(); //console.log('search click!'); } else { PopElt = getPopupMenu(overElt); try { var Pos = getPopupPos(overElt); PopElt.openPopup(overElt, Pos, 0, 0, false, false, null); } catch(e) { PopElt = null; } } } function HidePopup() { try { if (overElt.localName == 'dropmarker') { try { PopElt.parentNode.closePopup(); } catch(e) { PopElt.parentNode.parentNode.closePopup(); } } else if (overElt.localName == 'menulist') PopElt.open = false; else if (IsDownloadBtn(overElt)) DownloadsPanel.hidePanel(); //else if (IsNewMenuBtn(overElt) || IsWidgetBtn(overElt)) else if (PopElt && PopElt.hidePopup) PopElt.hidePopup(); else if (PopElt.popupBoxObject) PopElt.popupBoxObject.hidePopup(); else if (IsSearchBtn(overElt)) searchBar.textbox.closePopup(); } catch(e) { } HideTimer = null; overElt = PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; var popNode, n = e.originalTarget; whitesInx = -1; // gsf :some,forEach,filter等数组遍历方法接受第二个参数,表作用域this,可不用call了 if (n.hasAttribute('id') && whiteIDs.some(function(k,i,me) { if (k.id == n.id) { overElt = n; whitesInx = i; PopElt = document.getElementById(k.popMemu); PopTimer = setTimeout(AutoPopup, showDelay); return true; } })) return; popNode = getPopupNode(e.originalTarget); if (!popNode || (popNode && popNode.disabled) || isBlackNode(popNode)) { MouseOut(); return; } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if (IsAutoComplete(popNode)) return; for (var elt = popNode; elt != null; elt = elt.parentNode) { if (elt.localName == 'menupopup' || elt.localName == 'popup') return; } } catch(e) { } if (PopElt && popNode == PopElt && PopElt != overElt) return; if (overElt && popNode != overElt) HidePopup(); overElt = popNode; PopElt = null; PopTimer = setTimeout(AutoPopup, showDelay); } function MouseOut(e) { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt) HideTimer = window.setTimeout(HidePopup, hideDelay); } window.addEventListener('mouseover', MouseOver, false); })();
-
man kann es mit einem Skript, irgendwie, umgehen.Ja, kann man, mit einem Skript für Grease-, Tamper- oder Violentmonkey. Wie lautet die Adresse der Weiterleitungsseite?
-
Bitte, gern geschehen.
-
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); }); })();
-
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); })();
-
https://www.camp-firefox.de/forum/memberli…rofile&u=100746
Edit 2002Andreas...User und Beiträge gelöscht.
-
Hallo,
nach den ersten drei Zeilen:
Code(function() { function doDatClock() { var timestr = new Date().toLocaleDateString( locale , options );
füge diese Zeilen ein:
Codeconst blanks = ' '; let i = timestr.lastIndexOf(','); timestr = timestr.substring(0,i) + blanks + timestr.substring(i+1);
und bei
const blanks = ' ';
schreibe zwischen die Apostrophe die gewünschten Leerzeichen. -
Alles Gute!
-
"Alle in Tabs öffnen" nach oben:
Code
Alles anzeigen.bookmark-item .arrowscrollbox-scrollbox { display: flex; flex-direction: column; } menuitem.openintabs-menuitem { order: -2; } menuseparator.bookmarks-actions-menuseparator { order: -1; }
Ein Skript für die Anzahl der Lesezeichen:
Code
Alles anzeigen(function() { setTimeout(function() { if (!window.PlacesViewBase) return; let str = PlacesViewBase.prototype._mayAddCommandsItems.toString() .replace('gNav' , '"(" + aPopup._placesNode.childCount + ") " + gNav'); eval('PlacesViewBase.prototype._mayAddCommandsItems = ' + str); }, 100); })();
-
-
-
Das ist das gleiche Skript wie das aus #4 bis auf die Klammer ganz am Anfang. Diese fehlt bei #4 und darum funktioniert es nicht.
-
Was steht im neuen Profil in der Browserkonsole (Strg+Umschalt+J) ?
-
-
Ja, das ist er; er ist grau, sollte sich aber dennoch verschieben lassen. Ist vielleicht im linken Teil, bei den unbenutzten Buttons, einer mit der Bezeichnung "Firefox anpassen" und ohne Grafik? Wenn ja, ziehe ihn in eine Leiste und in einem neuen Fenster müsste er dort zu sehen sein.
-
Funktioniert bei mir. Was genau geht nicht?
-
Linksklick in einen Bereich der Menü-, Tab- oder LZ-Leiste, wo sich kein Element befindet. In einem neuen Profil ist das jeweils ca. die rechte Hälfte.