1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. aborix

Beiträge von aborix

  • autopopup funktioniert in Nightly nicht mehr

    • aborix
    • 7. Mai 2019 um 22:39

    Wenn im Autopopup-Skript aus #6 bei den WhiteIDs (ab Zeile 26) noch diese Zeilen eingefügt werden:

    Code
    {
    		id: 'searchbar-history-dropmarker',
    		popMemu: 'PopupSearchAutoComplete',
    		run: null
    	}

    dann funktioniert das Autopopup mit den Skripten aus #7 und #8. Ohne nicht.

  • autopopup funktioniert in Nightly nicht mehr

    • aborix
    • 5. Mai 2019 um 22:13

    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
    // ==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);
    
    
    })();
    Alles anzeigen
  • Firefox 61 Kontextmenü aufräumen ?

    • aborix
    • 5. Mai 2019 um 21:06

    Nimm folgende Zeile noch dazu. Klappt das?

    Code
    menuitem[label="Flagfox"],
  • autopopup funktioniert in Nightly nicht mehr

    • aborix
    • 4. Mai 2019 um 08:58

    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
    // ==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);
    
    
    })();
    Alles anzeigen
  • gmx weiterleitung

    • aborix
    • 30. April 2019 um 01:00
    Zitat von robotest


    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?

  • Netzwerkanalyse automatisch geöffnet in jedem neuen Fenster/Tab

    • aborix
    • 28. April 2019 um 21:28

    Bitte, gern geschehen. :)

  • Netzwerkanalyse automatisch geöffnet in jedem neuen Fenster/Tab

    • aborix
    • 28. April 2019 um 07:52

    Teste dieses Skript. Die Grafiken können natürlich andere sein.

    Code
    (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);
      });
    
    
    })();
    Alles anzeigen
  • Netzwerkanalyse automatisch geöffnet in jedem neuen Fenster/Tab

    • aborix
    • 27. April 2019 um 09:32

    Teste das folgende Skript. Es funktioniert voerst nur bei im Vordergrund geöffneten Tabs.

    Code
    (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);
    
    
    })();
    Alles anzeigen
  • Meldungen über Spam im Forum

    • aborix
    • 22. April 2019 um 07:17

    https://www.camp-firefox.de/forum/memberli…rofile&u=100746

    Edit 2002Andreas...User und Beiträge gelöscht.

  • Script Datum + Uhrzeit neben Menüleiste

    • aborix
    • 21. April 2019 um 22:32

    Hallo,

    nach den ersten drei Zeilen:

    Code
    (function() {
    	function doDatClock() {
    		var timestr = new Date().toLocaleDateString( locale , options );

    füge diese Zeilen ein:

    Code
    const 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.

  • Der Glückwunsch-Thread

    • aborix
    • 7. April 2019 um 20:33

    Alles Gute! :)

  • Alle in Tabs öffnen - wieder nach oben ?

    • aborix
    • 3. April 2019 um 22:43

    "Alle in Tabs öffnen" nach oben:

    Code
    .bookmark-item .arrowscrollbox-scrollbox {
      display: flex;
      flex-direction: column;
    }
    
    
    menuitem.openintabs-menuitem {
      order: -2;
    }
    
    
    menuseparator.bookmarks-actions-menuseparator	{
      order: -1;
    }
    Alles anzeigen

    Ein Skript für die Anzahl der Lesezeichen:

    Code
    (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);
    
    
    })();
    Alles anzeigen
  • Lesezeichen speichern: Anzeigedauer & -größe des Dialogfensters zur Bearbeitung

    • aborix
    • 2. April 2019 um 20:57

    Die Anzeigedauer des Panels ist 3,5 Sekunden. Mit einem Skript kann man sie verändern. In der dritten Zeile wird die Zeit in Sekunden angegeben. Z.B. für 10 Sekunden:

    JavaScript
    (function() {
      if (window.StarUI) {
        const delay = 10;
        StarUI._autoCloseTimeout = delay * 1000;
      }
    })();
  • ebay Anpassen, geht das eigentlich ?

    • aborix
    • 1. April 2019 um 07:53

    Falls es mit CSS nicht machbar ist, vielleicht mit einem Skript für Grease-, Tamper- oder Violentmonkey:

    Code
    let elem = document.querySelector('.tabbable');
    let bPanel = document.getElementById('BottomPanel');
    bPanel.parentNode.insertBefore(elem, bPanel);
  • Hamburgermenü lässt sich nicht mehr verschieben

    • aborix
    • 29. März 2019 um 06:47

    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.

  • Hamburgermenü lässt sich nicht mehr verschieben

    • aborix
    • 28. März 2019 um 23:16

    Was steht im neuen Profil in der Browserkonsole (Strg+Umschalt+J) ?

  • findbar icon close nach links verschieben ?

    • aborix
    • 28. März 2019 um 23:02

    userChrome.css:

    Code
    .findbar-closebutton {-moz-box-ordinal-group: 0}
  • Hamburgermenü lässt sich nicht mehr verschieben

    • aborix
    • 28. März 2019 um 23:00

    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.

  • Hamburgermenü lässt sich nicht mehr verschieben

    • aborix
    • 28. März 2019 um 22:47

    Funktioniert bei mir. Was genau geht nicht?

  • Lesezeichenleist wie Startleist von Opera?

    • aborix
    • 27. März 2019 um 22:35

    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.

Unterstütze uns!

Jährlich (2025)

101,9 %

101,9% (662,48 von 650 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon