Ja, bitte.
userChrome.js Scripte für den Fuchs (Diskussion)
-
Endor -
12. Mai 2015 um 14:19 -
Erledigt
-
-
Hallo aborix.
Erledigt. Habe beide an Mithrandir weiter gegeben.
Mal sehen bis wann er Zeit zum Hochladen hat.
Mfg.
Endor -
Gibt es eine Möglichkeit, das Script InspectElementModY wieder zum Laufen zu bewegen?
Genau genommen ist es mir aber egal, ob das Script selber wieder funktioniert. Ich würde nur gern die Funktionalität zurück bekommen, bei SHIFT+Rechtsklick auf ein Element dieses im internen Firefox-Inspektor auszuwählen. Somit muss nicht mehr im Kontextmenü nach dem Eintrag „Element untersuchen (Q)“ gefahndet werden.
Für den DOM-Inspector nutze ich – mittlerweile relativ selten, aber ich bin froh, es zu haben – ein Script von Aborix, das leider nie auf Mithrandirs Userscript-Seite hochgeladen wurde, siehe Inkompatibilitäten zwischen Addons und UserChromeJS-Skripten, Beitrag #19 (ich habe es lokal ClickInspect genannt). Es handelt sich hier zufällig um eine vereinfachte Version von Inspect Element mit dem wichtigen Unterschied, dass die Tastenkombi STRG+Rechtsklick ist.
-
Hallo Speravir.
Teste bitte mal das hier:Code
Alles anzeigen// ==UserScript== // @name Element Inspector // @namespace inspectElement@zbinlin // @description Umschalttaste + Rechtsklick öffnet Elemet im DOM Inspector // @include * // @author zbinlin // @homepage http://mozcp.com // @version 0.0.5 // ==/UserScript== /* * ================================ Changelog ================================ * * version: 0.0.5 * * 可以使用 Firebug 或 Firefox Inspector (Firefox 17+) 来定位元素 * * version: 0.0.2 * * 将 click 事件由冒泡型改为捕获型 * * version: 0.0.1 * * 初始化 * * =========================================================================== */ "use strict"; let {AddonManager} = Components.utils.import("resource://gre/modules/AddonManager.jsm", {}); let inspectElement = { disabled: true, handleEvent: function (e) { if (!e.shiftKey || e.button != 2) return; e.stopPropagation(); e.stopImmediatePropagation && e.stopImmediatePropagation(); e.preventDefault(); if ("click" !== e.type.toLowerCase()) return; var elem = e.originalTarget; if (this.disabled) { try { if (window.Firebug) { let Firebug = window.Firebug; (function (elem, Firebug) { Firebug.browserOverlay.startFirebug(function (Firebug) { Firebug.Inspector.inspectFromContextMenu(elem); }); })(e.target, Firebug); } else { (function (elem) { /* * 有这么变的吗,四个版本,变了三次地址!!! */ let devtools = {}; let version = Services.appinfo.version.split(".")[0]; let DEVTOOLS_URI; if (version >= 24) { DEVTOOLS_URI = "resource://gre/modules/devtools/Loader.jsm"; ({devtools} = Components.utils.import(DEVTOOLS_URI, {})); } else if (version < 24 && version >= 23) { DEVTOOLS_URI = "resource:///modules/devtools/gDevTools.jsm"; ({devtools} = Components.utils.import(DEVTOOLS_URI, {})); } else if (version < 23 && version >= 20) { DEVTOOLS_URI = "resource:///modules/devtools/Target.jsm"; devtools = Components.utils.import(DEVTOOLS_URI, {}); } else { return (function (elem, InspectorUI) { if (InspectorUI.isTreePanelOpen) { InspectorUI.inspectNode(elem); InspectorUI.stopInspecting(); } else { InspectorUI.openInspectorUI(elem); } })(e.target, window.InspectorUI); } let gBrowser = window.gBrowser, gDevTools = window.gDevTools; let tt = devtools.TargetFactory.forTab(gBrowser.selectedTab); return gDevTools.showToolbox(tt, "inspector").then((function (elem) { return function(toolbox) { let inspector = toolbox.getCurrentPanel(); inspector.selection.setNode(elem, "UserChromeScript-Element-Inspector"); } })(e.target)); })(elem); } } catch (ex) { alert("\u8BF7\u68C0\u67E5 DOM Inspector \u662F\u5426\u5B89\u88C5\u6216\u7981\u7528\u4E86\uFF01"); } } else { window.openDialog("chrome://inspector/content/", "_blank", "chrome, all, dialog=no", elem); } this.closePopup(elem); }, closePopup: function (elem) { var parent = elem.parentNode; var list = []; while (parent != window && parent != null) { if (parent.localName == "menupopup") { list.push(parent); } parent = parent.parentNode; } var len = list.length; if (!len) return; list[len - 1].hidePopup(); } }; AddonManager.getAllAddons(function (addons) { for (let i in addons) { if (addons[i].id == "inspector@mozilla.org" && addons[i].isActive) { inspectElement.disabled = false; break; } } }); window.addEventListener("click", inspectElement, true); window.addEventListener("contextmenu", inspectElement, true); window.addEventListener("unload", function _(e) { window.removeEventListener("unload", _, false); window.removeEventListener("click", inspectElement, true); window.removeEventListener("contextmenu", inspectElement, true); }, false);
Mfg.
Endor -
Hallo Speravir.
Habe eben mal das von Dir erwähnte Script getestet, der Kontextmenü Eintrag für
die Einstellungen zum Script wird nicht mehrt angezeigt. Sonst funktioniert es hier bestens.
Das lässt sich aber leicht reparieren. Wo möchtest Du den Eintrag dazu haben.
Im Moment sollte er in den Entwickler Werkzeugen kommen, das geht aber anscheinend nicht mehr.
Siehe dazu Zeile 180 im Script:Mfg.
Endor -
Hallo Speravir.
Teste bitte mal das hier:Ach ja, stimmt, darauf hatte ich nebenbei auch noch hinweisen wollen, dass unter zbinlin / Element Inspector / source / — Bitbucket eine neuere Version von InspectElement existiert, das dürfte die von dir gepostete sein (mit Übersetzungen von dir [?] - BTW: Elemet --> Element). Aber um den DOM-Inspector geht es mir gar nicht, das funktioniert mit Aborix' Version prima.
Habe eben mal das von Dir erwähnte Script getestet, der Kontextmenü Eintrag für
die Einstellungen zum Script wird nicht mehrt angezeigt. Sonst funktioniert es hier bestens.
Das lässt sich aber leicht reparieren. Wo möchtest Du den Eintrag dazu haben.
Im Moment sollte er in den Entwickler Werkzeugen kommen, das geht aber anscheinend nicht mehr.
Wenn, dann wieder in den Entwickler-Werkzeugen, wobei es bei mir dann wohl wie schon früher unter den Erweiterungen erscheinen würde (der AddonLister ist auch dort, obwohl er das laut Doku nicht sollte), Ursache ist More Tools Menu.Aber: Bist Du dir sicher, dass das Script bei dir richtig funktioniert? Mal als Beispiel: Wenn man hier auf ein Avatar geht und dann im Rechtsklick-Kontextmenü „Element untersuchen“ auswählt, dann sollte so etwas im Inspektor ausgewählt sein (auf Anfang gekürzt)
Mach ich dasselbe mit SHIFT+Rechtsklick, lande ich immer nur im body-Element zu Beginn
Das hat bis Firefox-Version 50 (?) aber genauso funktioniert, dass das richtige Element ausgewählt war. -
Also hier kommt genau auch bei Umschalttaste+Rechtsklick:
In die Entwickler-Werkzeuge geht eben nicht mehr.
Jedenfalls ich kriege das nicht mehr hin. So erscheint es oberhalb des Eintrags der Firefox Einstellungen.
ändere Zeile 180 so:
oder hier das geänderte Script:Code
Alles anzeigen// ==UserScript== // @name Element Inspector ModY // @namespace inspectElement@zbinlin // @description Umschalttaste + Rechtsklick öffnet im DOM Inspector das entsprechende Element // @include main // @author ywzhaiqi && zbinlin(原作者) // @homepage http://mozcp.com // @version 0.6 // @charset UTF-8 // @compatibility Firefox 20 // @note 改自扩展 0.0.6,增加设置,可选择网页、主窗口的查看器。 // ==/UserScript== (function(){ "use strict"; /* * 当 DOM Inspector 未安装时,如果查找的是 WEB 中的元素,将尝试: * 当安装装了 Firebug,将使用 Firebug 来定位元素的 DOM 位置; * 否则尝试通过 Firefox 自带的(仅支持 Firefox 17+)Inspector 来定位元素。 */ if (window.InspectElement) { window.InspectElement.shutdown(); delete window.InspectElement; } if (!window.Services) Cu.import("resource://gre/modules/Services.jsm"); if (!window.AddonManager) Cu.import("resource://gre/modules/AddonManager.jsm"); const TYPE_FIREBUG = 0; const TYPE_DEV_TOOLS = 1; const TYPE_DOM_INSPECTOR = 2; window.InspectElement = { hasDOMInspector: false, ww: Services.ww, // nsIWindowWatcher wm: Services.wm, // nsIWindowMediator contentType: TYPE_FIREBUG, mainWinType: TYPE_DOM_INSPECTOR, checkExists: true, // 如果 Firebug 或自带查看器已经在使用,则不会打开新的查看器。 get isWinNT() { var os = Services.appinfo.OS; return os == "WINNT" ? true : false; }, get prefs() { delete this.prefs; return this.prefs = Services.prefs.getBranch("userChromeJS.InspectElement."); }, handleEvent: function(e) { // Shift + 右键 响应 if (!e.shiftKey || e.button != 2) return; e.stopPropagation(); e.preventDefault(); if (e.type != "click") return; let elem = e.originalTarget, win = e.currentTarget, elemWin = elem.ownerDocument.defaultView, iType; switch(true) { case elemWin == content: // 网页 iType = this.contentType; break; case elemWin == window: // 主窗口 iType = this.mainWinType; break; default: iType = TYPE_DOM_INSPECTOR; break; } if (iType == TYPE_DOM_INSPECTOR && this.hasDOMInspector) { win.openDialog("chrome://inspector/content/", "_blank", "chrome, all, dialog=no", elem); return; } let forceUseFirebug = (iType == TYPE_FIREBUG); try { mInspector.start(e.target, forceUseFirebug, this.checkExists); } catch (ex) { this.error(); } this.closePopup(elem, win); }, closePopup: function (elem, win) { var parent = elem.parentNode; var list = []; while (parent != win && parent != null) { if (parent.localName == "menupopup" || parent.localName == "popup") { list.push(parent); } parent = parent.parentNode; } var len = list.length; if (!len) return; list[len - 1].hidePopup(); }, aListener: { onOpenWindow: function (aWindow) { var win = aWindow.docShell.QueryInterface( Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); win.addEventListener("load", function _() { this.removeEventListener("load", _, false); win.addEventListener("click", InspectElement, true); // fix context menu bug in linux if (InspectElement.isWinNT) return; //win.addEventListener("mousedown", InspectElement, true); win.addEventListener("mouseup", InspectElement, false); win.addEventListener("contextmenu", InspectElement, true); }, false); }, onCloseWindow: function (aWindow) {}, onWindowTitleChange: function (aWindow, aTitle) {}, }, startup: function () { this.wm.addListener(this.aListener); var cw = this.ww.getWindowEnumerator(); while (cw.hasMoreElements()) { var win = cw.getNext().QueryInterface(Ci.nsIDOMWindow); win.addEventListener("click", InspectElement, true); // fix context menu bug in linux if (this.isWinNT) continue; //win.addEventListener("mousedown", InspectElement, true); win.addEventListener("mouseup", InspectElement, false); win.addEventListener("contextmenu", InspectElement, true); } var that = this; var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); timer.initWithCallback(function () { AddonManager.getAllAddons(function (addons) { for (let i in addons) { if (addons[i].id == "inspector@mozilla.org" && addons[i].isActive) { that.hasDOMInspector = true; break; } } }); }, 500, Ci.nsITimer.TYPE_ONE_SHOT); this.addMenuitem(); this.loadSetting(); this.prefs.addObserver('', this, false); }, shutdown: function () { this.wm.removeListener(this.aListener); var cw = this.ww.getWindowEnumerator(); while (cw.hasMoreElements()) { var win = cw.getNext().QueryInterface(Ci.nsIDOMWindow); win.removeEventListener("click", InspectElement, true); if (this.isWinNT) continue; //win.removeEventListener("mousedown", InspectElement, true); win.removeEventListener("mouseup", InspectElement, false); win.removeEventListener("contextmenu", InspectElement, true); } let menuitem = document.getElementById("InspectElement-menuitem"); if (menuitem) menuitem.parentNode.removeChild(menuitem); this.prefs.removeObserver('', this, false); }, addMenuitem: function() { let menuitem = document.createElement('menuitem'); menuitem.setAttribute('id', 'InspectElement-menuitem'); menuitem.setAttribute('label', '„Inspect Element“ Einstellungen'); menuitem.setAttribute('oncommand', 'InspectElement.openPref();') let ins = document.getElementById('menu_preferences'); ins.parentNode.insertBefore(menuitem, ins); }, loadSetting: function() { try { this.contentType = this.prefs.getIntPref('contentType'); this.mainWinType = this.prefs.getIntPref('mainWinType'); this.checkExists = this.prefs.getBoolPref('checkExists'); } catch(ex) { this.prefs.setIntPref('contentType', this.contentType); this.prefs.setIntPref('mainWinType', this.mainWinType); this.prefs.setBoolPref('checkExists', this.checkExists); } }, openPref: function() { let xul = '<?xml version="1.0"?>\ <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>\ <prefwindow\ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\ id="InspectElement"\ title="Inspect Element Einstellungen"\ windowtype="InspectElement:Preferences">\ <prefpane id="main" flex="1">\ <preferences>\ <preference id="contentType" type="int" name="userChromeJS.InspectElement.contentType"/>\ <preference id="mainWinType" type="int" name="userChromeJS.InspectElement.mainWinType"/>\ <preference id="checkExists" type="bool" name="userChromeJS.InspectElement.checkExists"/>\ </preferences>\ <groupbox>\ <caption label="Betrachter-Einstellungen" />\ <vbox>\ <checkbox label="Verwendung bereits vorhandener Betrachter" preference="checkExists" />\ </vbox>\ <grid>\ <columns>\ <column />\ <column />\ </columns>\ <rows>\ <row align="center">\ <label value="Web-Werkzeug" />\ <menulist preference="contentType">\ <menupopup>\ <menuitem label="Firebug" value="0"/>\ <menuitem label="Integrierter Betrachter" value="1"/>\ <menuitem label="DOM Inspector" value="2"/>\ </menupopup>\ </menulist>\ </row>\ <row align="center">\ <label value="Im Entwicklerwerkzeuge-Hauptfenster anzeigen:" />\ <menulist preference="mainWinType">\ <menupopup>\ <menuitem label="Firebug" value="0"/>\ <menuitem label="Integrierter Betrachter" value="1"/>\ <menuitem label="DOM Inspector" value="2"/>\ </menupopup>\ </menulist>\ </row>\ </rows>\ </grid>\ </groupbox>\ </prefpane>\ </prefwindow>\ '; window.openDialog( "data:application/vnd.mozilla.xul+xml;charset=UTF-8," + encodeURIComponent(xul), '', 'chrome,titlebar,toolbar,centerscreen,dialog=no'); }, observe: function(aSubject, aTopic, aData){ if (aTopic == 'nsPref:changed') { switch(aData) { case 'contentType': case 'mainWinType': this[aData] = this.prefs.getIntPref(aData); break; case 'checkExists': this.checkExists = this.prefs.getBoolPref('checkExists'); break; } } else if (aTopic == "alertclickcallback" && aData == "link") { var win = this.wm.getMostRecentWindow("navigator:browser"); var url = 'https://addons.mozilla.org/en-US/firefox/addon/dom-inspector-6622/'; if (win && win.gBrowser) { win.gBrowser.loadOneTab(url, null, null, null, false, false); } else { this.ww.openWindow(win ? win : null, url, win.name, null, null); } } }, error: function () { var et = "Das Addon DOM Inspector ist erforderlich!" + "Bitte installieren, oder aktivieren Sie das Addon."; var as = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); as.showAlertNotification("chrome://global/skin/icons/Error.png", "Error:", et, true, "link", this, "InspectElementError"); return; } } /** * 调用自带的开发工具或 Firebug */ var mInspector = (function(){ let mainWin = window; let gDevTools = mainWin.gDevTools; let gBrowser = mainWin.gBrowser; let devtools = (function(){ /* * 有这么变的吗,四个版本,变了三次地址!!! */ let devtools = {}; let version = Services.appinfo.version.split(".")[0]; let DEVTOOLS_URI; if (version >= 24) { DEVTOOLS_URI = "resource://gre/modules/devtools/Loader.jsm"; ({devtools} = Cu.import(DEVTOOLS_URI, {})); } else if (version < 24 && version >= 23) { DEVTOOLS_URI = "resource:///modules/devtools/gDevTools.jsm"; ({devtools} = Cu.import(DEVTOOLS_URI, {})); } else if (version < 23 && version >= 20) { DEVTOOLS_URI = "resource:///modules/devtools/Target.jsm"; devtools = Cu.import(DEVTOOLS_URI, {}); } return devtools; })(); let inspectWithDevtools = function (elem){ let tt = devtools.TargetFactory.forTab(gBrowser.selectedTab); return gDevTools.showToolbox(tt, "inspector").then((function (elem) { return function(toolbox) { let inspector = toolbox.getCurrentPanel(); inspector.selection.setNode(elem, "UC-Element-Inspector"); } })(elem)); }; let inspectWithFirebug = function (elem){ let Firebug = mainWin.Firebug; Firebug.browserOverlay.startFirebug(function(Firebug){ Firebug.Inspector.inspectFromContextMenu(elem); }); }; let start = function(elem, useFirebug, checkExists){ let Firebug = mainWin.Firebug; if (checkExists) { // 已经打开则直接启动 if (Firebug && Firebug.isInitialized && Firebug.currentContext) { inspectWithFirebug(elem); return; } else { // 检测自带开发工具是否已经启动 let target = devtools.TargetFactory.forTab(gBrowser.selectedTab); let toolbox = gDevTools.getToolbox(target); if (toolbox) { inspectWithDevtools(elem); return; } } } // 没有打开则启动 if (useFirebug && Firebug) { inspectWithFirebug(elem); } else { inspectWithDevtools(elem); } }; return { start: start, inspectWithDevtools: inspectWithDevtools, inspectWithFirebug: inspectWithFirebug }; })(); InspectElement.startup(); })()
Mfg.
Endor -
Genau genommen ist es mir aber egal, ob das Script selber wieder funktioniert. Ich würde nur gern die Funktionalität zurück bekommen, bei SHIFT+Rechtsklick auf ein Element dieses im internen Firefox-Inspektor auszuwählen. Somit muss nicht mehr im Kontextmenü nach dem Eintrag „Element untersuchen (Q)“ gefahndet werden.Teste dafür dieses Skript:
Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xul') return; document.getElementById('content-deck').addEventListener('click', function(event) { if (event.button == 2 && event.shiftKey) { var contextMenu = document.getElementById('contentAreaContextMenu'); // contextMenu.style.visibility = 'collapse'; setTimeout(function() { gContextMenu.inspectNode(); contextMenu.hidePopup(); // contextMenu.style.visibility = 'visible'; }, 0); }; }); })();
Es kann sein, dass das Kontextmenü kurz aufblitzt. Geschieht das? Wenn ja, nimm die beiden auskommentierten Zeilen hinzu.
-
Das ist merkwürdig.Zitat von EndorJa, damit erscheint das Script wieder, aber funktioniert bei mir eben nicht mehr richtig mit dem internen Inspektor (ich habe kurz testweise den DOM-Inspector aktiviert: Damit ist wie zu erwarten alles in Ordnung).
Teste dafür dieses Skript:
[…]
Es kann sein, dass das Kontextmenü kurz aufblitzt. Geschieht das? Wenn ja, nimm die beiden auskommentierten Zeilen hinzu.
Es wollte zuerst trotz Neuladens ohne Cache nicht funktionieren – das Kontextmenü blitzte nicht nur kurz auf, es blieb sogar in voller Größe erhalten. Nach mehreren Variationen des Auskommentierens und auch kurz mal als verwegene Änderung eines display:none-Äquivalents (die auskommentierten Zeilen sahen mir zurecht nach verborgenem CSS aus; !important hatte ich auch ausprobiert) und jeweiligem Neuladen funktioniert alles prima mit genau der Variante, die Du hier oben gepostet hast. Myysteeriööös.Da dein älteres und auch das neue Skript einen Click-Eventlistener haben, kann man die auch vereinigen? Ich meine jetzt nicht, dass ich den Code als zwei getrennte Funktionen in ein Skript packen kann, das ist mir klar.
-
[...] funktioniert alles prima mit genau der Variante, die Du hier oben gepostet hast.D.h. die Zeilen sind auskommentiert?
Da dein älteres und auch das neue Skript einen Click-Eventlistener haben, kann man die auch vereinigen?Ich sehe mir das an, wahrscheinlich ist es umständlicher.
Ich meine jetzt nicht, dass ich den Code als zwei getrennte Funktionen in ein Skript packen kann, das ist mir klar.Wenn du damit meinst, dass die Codes beider Skripte einfach nacheinander in einer Datei stehen: das geht.
Oder auch, etwas vereinfacht:
Code
Alles anzeigen(function() { window.addEventListener('click', function(event) { if (event.button == 2 && event.ctrlKey) { event.preventDefault(); event.stopPropagation(); openDialog('chrome://inspector/content/', '_blank', 'chrome, all, dialog=no', event.originalTarget); }; }, true); if (location == 'chrome://browser/content/browser.xul') { document.getElementById('content-deck').addEventListener('click', function(event) { if (event.button == 2 && event.shiftKey) { var contextMenu = document.getElementById('contentAreaContextMenu'); // contextMenu.style.visibility = 'collapse'; setTimeout(function() { gContextMenu.inspectNode(); contextMenu.hidePopup(); // contextMenu.style.visibility = 'visible'; }, 0); }; }); }; })();
-
Wenn du damit meinst, dass die Codes beider Skripte einfach nacheinander in einer Datei stehen: das geht.Oder auch, etwas vereinfacht:
[…]
Ja, etwa an so was hatte ich gedacht. Reicht völlig, aber wenn es noch kürzer ginge, wäre es auch nicht schlecht.Zitat von aborix
D.h. die Zeilen sind auskommentiert?
Ja. Was man nicht sehen kann: Ich habe mein Posting gestern mehrmals umgeschrieben, weil es zunächst einfach nicht funktionieren wollte. Jetzt gerade erst bemerke ich folgendes: Klicke ich nicht auf ein Bild, funtktioniert Dein Skript bestens. Klicke ich aber auf ein Bild (wie ein Avatar), spielen wohl noch weitere Skripte mit und verhindern, dass das Kontextmenü ausgeblendet wird. Ich habe schon ausprobiert, ein collapse !important einzusetzen. Ich werde mal testen müssen, wie es sich in einem ansonsten jungfräulichen Profil verhält. -
Ich sehe mir das an, wahrscheinlich ist es umständlicher.
So sieht es mit einem Event Listener für beide Funktionen aus:
Code
Alles anzeigen(function() { window.addEventListener('click', function(event) { if (event.button != 2) return; if (event.shiftKey) { if (location == 'chrome://browser/content/browser.xul' && event.target.ownerGlobal.top == content) { var contextMenu = document.getElementById('contentAreaContextMenu'); // contextMenu.style.visibility = 'collapse'; setTimeout(function() { gContextMenu.inspectNode(); contextMenu.hidePopup(); // contextMenu.style.visibility = 'visible'; }, 0); }; } else if (event.ctrlKey) { event.preventDefault(); event.stopPropagation(); openDialog('chrome://inspector/content/', '_blank', 'chrome, all, dialog=no', event.originalTarget); }; }); })();
-
So sieht es mit einem Event Listener für beide Funktionen aus:
Ich habe das Script mal (geklaut)...funktioniert für mich zumindest perfekt :klasse:Herzlichen Dank dafür und ein tolles Wochenende
-
So sieht es mit einem Event Listener für beide Funktionen aus:
Schick. Funktioniert auch hier prima. Zu meinen Problemen: In einem neuen Profil ging alles sofort. Dort merkte ich übrigens, dass ich die bisher auskommentierten Zeilen aktivieren musste.Im Hauptprofil habe ich immer wieder Probleme bei Klick auf Bilder, mir ist aber unklar, woran das liegen könnte. Eben gerade war ich direkt nach dem Browserstart in der Wikipedia, wo in einem Test das Kontextmenü sofort ausgeblendet wurde. Dann ging ich hierher und bei einem Klick auf Aborix' und mein Avatar kam das Kontextmenü, bei Endor und Andreas nicht. Das ist komisch und unschön, aber ich kann damit leben.
-
-
Teste:
Ersetze die Zeile
Keine Änderung. Ich habe mir das mal angesehen: Andreas und Endor haben ein JPG als Avatar, Du (Aborix) und ich ein PNG. Weil ich gestern von der Wikipedia schrieb, habe ich mir daraufhin dort (genau genommen in Wikimedia Commons) bewusst eine PNG-Datei ausgesucht und – was soll ich sagen – nun tauchte auch dort das Kontextmenü auf. Das lässt mich vermuten, dass es an FxIF liegt. Ich bin noch nicht dazu gekommen, das zu testen, werde das Addon aber so oder so ersetzen, da, wie ich jetzt sehe, ein Webextension-Port existiert.Update: Tatsächlich, FxIF war der Verursacher! Nach Entfernung funktioniert nun alles auch ohne Deine testweise Änderung.
-
Hi, lohnt es sich, sich wieder etwas in das Thema einzuarbeiten, oder hat Mozialla den Firefox weiter so "optimiert", dass fast alle Skripte unbenutzbar sind und die Szene so gut wie ausgestorben ist?
-
Die Frage ist auch, wird die Erweiterung userChrome.js noch angepasst bzw. wird es eine neue geben!?
-
Ob es sich lohnt kann man im Moment gar nicht sagen.
Keiner weiß genau was ab Firefox 57 noch möglich ist.
Im Moment geht es wie 2002Andreas schon sagt in erster Linie mal um die Erweiterung,
ob die als Webextension kommen wird oder nicht. Tampermonkey wäre im Moment
ja schon eine Möglichkeit. Loshombre und ich haben hier auch noch eine
Erweiterung für Userchrome Scripte aus den asiatischen tiefen, aber da tut
sich auch schon seit längerem nichts mehr.
Neue Scripte kann ich aber gerne noch einpflegen. Für ein paar Versionen, sowie
Firefox 52esr würden die sicher noch ein Jahr oder länger laufen.
Mfg.
Endor -
Ich habe jetzt mal bei Mozillazine im entsprechenden Thread nachgefragt:
http://forums.mozillazine.org/viewtopic.php?p=14747553#p14747553
Mal sehen ob und was mir geantwortet wird.
Leider habe ich keine andere Möglichkeit gefunden den Autor zu kontaktieren.
Mfg.
Endor -