Beiträge von aborix
-
-
Allerdings habe ich dafür hin und wieder Seiten, die sich in einem neuen Fenster öffnen, obwohl die entsprechende Option in den Einstellungen aktiv ist, um genau dies zu verhindern. :?browser.link.open_newwindow.restriction steht auf 0 ?
-
Funktioniert bei mir im Fx 58.0b3 in einem neuen Profil.
-
Kann man dieses Script für Firefox 57.0 und 58.0 wieder funktionsfähig machen?
https://github.com/ardiman/userCh…copyinsearchbarIch hab's in die Liste eingetragen:
https://docs.google.com/spreadsheets/d…dit?usp=sharingBitte tragt nicht funktionierende Skripte dort ein. Anmeldung ist nicht notwendig, Cookies müssen zugelassen werden. Sonst geht das hier unter. Hier werden nicht nur manchmal mehrere Skripte durcheinander behandelt (ist ok), sondern auch Skripte, CSS-Codes, was auch immer, das mit der Sammlung nichts zu tun hat (m.E. bis auf Ausnahmen nicht ok).
-
Hallo!
Öffnest du den Link in einem neuen Tab? Wenn ja, wie?
-
-
In der Sidebar sind Accesskeys bei der Chronik und im Kontextmenü.
Fürs Web-Entwickler-Menü und die anderen schauen wir mal, was EffPeh aus dem Hut zaubert. :wink:
-
Bei der for-Schleife kommt man auch ohne matches.length aus:
In jedem Fall wird das Attribut allerdings nur bei Menüeinträgen entfernt, die nach dem Öffnen des Fensters gleich vorhanden sind. Beim Webentwickler-Menü ist das nicht bei allen der Fall. Bei der Sidebar bleiben die Accesskeys auch. Da müsste man noch etwas machen. Wie Andreas will.
-
Darf ich wissen, welche?
-
Ja:
Code
Alles anzeigen// RAMBack.uc.js (function() { if (location != 'chrome://browser/content/browser.xul') return; try { CustomizableUI.createWidget({ id: 'ramback-button', defaultArea: CustomizableUI.AREA_NAVBAR, label: 'Internen Speicher leeren', tooltiptext: 'Internen Speicher leeren', onCommand: function() { onCommand(); } }); } catch(e) { }; const icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOcSURBVHjaYvz%2F%2Fz8DJQAggBgU5OUZeHl5GSQlJRnY2dkZ%2BPj4GLi5uRn4%2Bfmzvb29X6qpqW1lZGQUAqllZWVlkJGRAdNiYmIMnJycDAABxIJsGMg1nz9%2F5tHS0loSHBzsq6Ojw%2FTmzRuvNWvWXN6%2Ff3%2FCnz9%2FdgMNQ3EAQAAxCwgIMHz%2F%2Fp2BmZmZ4ffv3852dna7gJrNgbYw3rx5k%2BHXr18MBgYGvEAXhj948EAYaMnOHz9%2BgG0HyQEEEDPQqQxfvn4FObkrICBgMtBWocePHzO8evWK4e%2FfvwwfPnxg%2BPbtG4O8vDyzhoaGBdBFgc%2BePdsHNOAt0EIGgABi5uTg0JCTl9%2Fq7Owc9vPnT%2Bbr169DTAa6CBQmoPAAOp3h3r17DO%2Ffv2cAWiDBw80d%2F%2Fbt28%2Ffv307CxBAzH4hYddMLazUjh4%2ByHD%2F%2Fn0GHh4ekGsYhISEGFhYWMAuePHiBZh%2B8uQJw727dxlMLK3YhcUkPW%2FdvM4AEEAsfrYWwiqi4gxf3r9jOHHiKDiEQZqBrgF7A6QR5ILv374DDWRlUNHUZGACikn%2B%2FcYIdIknQAAxRwk8yjGy%2Fc8tKWzJICSvw%2FD0%2BWOGZ0%2BfMjx6%2BBCsGRTAX798YRAUFmJQ09Jn4P7BwBDpzMxgIPaMYf32u%2BcAAojp1VeBS9y8fxi%2BbalmMGe7x%2BDvHcAgoaDK8AUYcK9evgQbIK%2BmyaCsZsigzPKWwfrPQQZ1yc8M39ll%2F3358fcIQACx2Mvxqfx49wKYMHgZpE2%2FMDxdsJbBkFOBgc%2FJjeHa1QsMAiJiDPw%2F%2FzJwnd%2FHENlixsDz1oTh%2FY1bDBJSRoxiHMycAAEAQQC%2B%2FwTW2dP95K%2F9AOryJf4T5eoCEvDJADFYEwC7xgkA9h8mAAHs6QBhUxIABd4CAPba0gDsACv%2F3sfq%2FxccxwL9%2Fv4fAgBBAL7%2FAq7H50BmkuSYHxL9%2FQP25QDm9xv%2BGh0JAPDZwQDh5esA8ebcACEY8QD4Cib%2B7ejtACwd9AGktu%2FXT5DXid36%2B4oCiCFOiINBBJgkPYSY6lOlGF4vibL99f9s9P9gdc43QlIKx9V4uK%2FfmG%2F2%2F9Lc6H85EsyvIxRZnrMzMiTCkjJAAIENkAYyOCBc%2BXYbqQuny5X%2F6wswHgcJiDEwqK6LEf%2ByIVXlvzAD0wSIEAIABBDYACkgQxiIuYFYgoFBGpj12pgYGLxB8iDXKTIwBPEyMLQAmeKMaLkZIMAAUM1Z7n%2BaufcAAAAASUVORK5CYII%3D'; document.getElementById('ramback-button').style.listStyleImage = 'url(' + icon + ')'; var menuitem = document.createElement("menuitem"); menuitem.id = "menu_ramback"; menuitem.className = "menuitem-iconic"; menuitem.setAttribute("image", icon); menuitem.setAttribute("label", "Internen Speicher leeren"); menuitem.addEventListener("command", onCommand); document.getElementById("menu_ToolsPopup").appendChild(menuitem); function onCommand() { // since we don't know the order of how things are going to go, fire these multiple times Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "dump-mem-stats", "clean up, pig!"); }; })();
-
Wir ersetzen RAMBack.uc.xul durch folgendes .js-Skript. Button und Menüeintrag sind vorhanden. Bitte testet, ob die Funktion richtig ausgeführt wird.
Code
Alles anzeigen// RAMBack.uc.js (function() { if (location != 'chrome://browser/content/browser.xul') return; try { CustomizableUI.createWidget({ id: 'ramback-button', defaultArea: CustomizableUI.AREA_NAVBAR, label: 'Internen Speicher leeren', tooltiptext: 'Internen Speicher leeren', onCommand: function() { onCommand(); } }); } catch(e) { }; document.getElementById('ramback-button').style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAOcSURBVHjaYvz%2F%2Fz8DJQAggBgU5OUZeHl5GSQlJRnY2dkZ%2BPj4GLi5uRn4%2Bfmzvb29X6qpqW1lZGQUAqllZWVlkJGRAdNiYmIMnJycDAABxIJsGMg1nz9%2F5tHS0loSHBzsq6Ojw%2FTmzRuvNWvWXN6%2Ff3%2FCnz9%2FdgMNQ3EAQAAxCwgIMHz%2F%2Fp2BmZmZ4ffv3852dna7gJrNgbYw3rx5k%2BHXr18MBgYGvEAXhj948EAYaMnOHz9%2BgG0HyQEEEDPQqQxfvn4FObkrICBgMtBWocePHzO8evWK4e%2FfvwwfPnxg%2BPbtG4O8vDyzhoaGBdBFgc%2BePdsHNOAt0EIGgABi5uTg0JCTl9%2Fq7Owc9vPnT%2Bbr169DTAa6CBQmoPAAOp3h3r17DO%2Ffv2cAWiDBw80d%2F%2Fbt28%2Ffv307CxBAzH4hYddMLazUjh4%2ByHD%2F%2Fn0GHh4ekGsYhISEGFhYWMAuePHiBZh%2B8uQJw727dxlMLK3YhcUkPW%2FdvM4AEEAsfrYWwiqi4gxf3r9jOHHiKDiEQZqBrgF7A6QR5ILv374DDWRlUNHUZGACikn%2B%2FcYIdIknQAAxRwk8yjGy%2Fc8tKWzJICSvw%2FD0%2BWOGZ0%2BfMjx6%2BBCsGRTAX798YRAUFmJQ09Jn4P7BwBDpzMxgIPaMYf32u%2BcAAojp1VeBS9y8fxi%2BbalmMGe7x%2BDvHcAgoaDK8AUYcK9evgQbIK%2BmyaCsZsigzPKWwfrPQQZ1yc8M39ll%2F3358fcIQACx2Mvxqfx49wKYMHgZpE2%2FMDxdsJbBkFOBgc%2FJjeHa1QsMAiJiDPw%2F%2FzJwnd%2FHENlixsDz1oTh%2FY1bDBJSRoxiHMycAAEAQQC%2B%2FwTW2dP95K%2F9AOryJf4T5eoCEvDJADFYEwC7xgkA9h8mAAHs6QBhUxIABd4CAPba0gDsACv%2F3sfq%2FxccxwL9%2Fv4fAgBBAL7%2FAq7H50BmkuSYHxL9%2FQP25QDm9xv%2BGh0JAPDZwQDh5esA8ebcACEY8QD4Cib%2B7ejtACwd9AGktu%2FXT5DXid36%2B4oCiCFOiINBBJgkPYSY6lOlGF4vibL99f9s9P9gdc43QlIKx9V4uK%2FfmG%2F2%2F9Lc6H85EsyvIxRZnrMzMiTCkjJAAIENkAYyOCBc%2BXYbqQuny5X%2F6wswHgcJiDEwqK6LEf%2ByIVXlvzAD0wSIEAIABBDYACkgQxiIuYFYgoFBGpj12pgYGLxB8iDXKTIwBPEyMLQAmeKMaLkZIMAAUM1Z7n%2BaufcAAAAASUVORK5CYII%3D)'; var menuitem = document.createElement("menuitem"); menuitem.setAttribute("id", "menu_ramback"); menuitem.setAttribute("label", "Internen Speicher leeren"); menuitem.addEventListener("command", onCommand); document.getElementById("menu_ToolsPopup").appendChild(menuitem); function onCommand() { // since we don't know the order of how things are going to go, fire these multiple times Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); Services.obs.notifyObservers(null, "dump-mem-stats", "clean up, pig!"); }; })();
-
-
Vermute ich auch. Teste in einem neuen Profil, in dem du nur diesen Code verwendest und sonst nichts verändert ist.
-
Mit dem Code aus #66 geht das nicht?
Ich kann damit den Teil von "Datei" bis "Hilfe" beliebig in den Leisten verschieben. -
Mit Greasemonkey ist das nicht möglich.
Skripte für Greasemonkey wirken auf Webseiten und nicht auf Eigenschaften und Funktionen von Firefox. Sie haben die Möglickeiten, die in Webseiten enthaltene Skripte haben. Das Ein- und Ausschalten der Leseansicht ist eine Funktion von Firefox, die m.W. Webseiten nicht zugänglich ist. -
-
-
-
Ich habe eine neue Variante, über die config-Datei Skripte auszuführen, die einige Vorteile hat.
Vorweg, die bisherige Methode funktioniert nach wie vor, niemand muss die neue Variante verwenden.So sieht sie aus:
Die config-prefs im Unterordner \defaults\pref des Installationsordners bleibt, wie sie ist.
Die config.js im Installationsordner ist geändert mit diesem Inhalt:Code
Alles anzeigen// // config.js const Cu = Components.utils; try { Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/osfile.jsm"); if (!Services.appinfo.inSafeMode) { let path = OS.Constants.Path.libDir; var ucjsDirPath = OS.Path.join(path, "userChromeJS"); path = OS.Path.join(ucjsDirPath, "main.js"); let mainFileURI = OS.Path.toFileURI(path); Services.scriptloader.loadSubScript(mainFileURI, this, "UTF-8"); }; } catch(e) { Cu.reportError(e); };
Die userChromeJS.js im Installationsordner kommt weg und es kommt ein Ordner userChromeJS hinzu. Er ist hier gezippt angehängt:
[attachment=0]userChromeJS.zip[/attachment]
Nach dem Herunterladen entpacken und in den Installationsordner einfügen.
Die Neuerungen:
Die config.js enthält jetzt nur einen Verweis auf den Ordner userChromeJS. Das ist übersichtlicher, vor allem wenn evtl. Code für andere Dinge in die config.js hinzukommt.
Der Ordner enthält allen relevanten Code für die Ausführung der Skripte, teilweise stark vereinfacht gegenüber bisher.
Der Ordner muss nicht im Installationsordner sein, sondern kann sich an einem beliebigen Ort befinden, die Pfadangabe in der config.js muss dann angepasst werden. Genaueres bitte erfragen.Wie in der Erweiterung wird jetzt die Datei userChrome.js angelegt, falls sie nicht vorhanden ist, und enthält dann auch das Readme.
Es ist jetzt möglich, importierte .js-Skripte ohne Verwendung des Skript-Caches direkt aus dem Chrome-Ordner zu laden. Änderungen sind dann ohne Neustart in einem neuen Fenster vorhanden und beim Neustart muss der Skript-Cache nicht geleert werden.
Dazu schreibt man in die userChrome.js folgende Anweisung vor der/den Importanweisung(en):.xul-Skripte werden ohnehin immer aus dem Chrome-Ordner geladen.
Nach Änderungen in der userChrome.js hingegen ist nach wie vor ein Neustart mit Skript-Cache leeren erforderlich.
Im Readme ist das auch beschrieben. -
Teste mal: Füge direkt rechts neben dem Hilfe-Menü einen flexiblen Zwischenraum ein.