Button die Dateigröße ist dreimal kleiner.
Beiträge von lenny2
-
-
Das tuts:
Wunderbar, jetzt weiß ich, wie ich hier ein lokales icon schreiben kann.
-
addonStartup.json.lz4, compatibility,
Diese beiden Dateien können problemlos gelöscht werden, beim Neustart werden sie ohne Schaden neu erstellt.
ExperimentStoreData.json webappsstore.sqlite-wal datum der letzten Änderung vor 10 Tagen.
Ich würde damit beginnen, die Erweiterungen eine nach der anderen oder alle zu deaktivieren. Übrigens benutze ich auch CCleaner, und es gibt keine negativen Auswirkungen.
-
Und woher stammt das Skript, eventuell gibt es da noch ein paar Informationen dazu,
also zum Skript?
Original source ist unbekannt, ich habe das Skript von einem anderen Studenten erhalten.
Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.
Die rechte Schaltfläche prüfe ich auf CSS für Firefox View Next, es funktioniert, userContent.css wird neu geladen. Es ist durchaus möglich, dass etwas im Skript korrigiert werden muss, aber ich weiß es nicht.
-
Die Dateien reload_userChrome.uc.js (das ist nur die Grafik Schaltfläche) und reload_userChrome.txt (Funktionalität) müssen sich im selben Ordner befinden, die Dateinamen können unterschiedlich sein, aber der Name der txt-Datei muss im Skriptcode angegeben werden. reload_userChrome.txt ist der alte Code für die Erweiterung Custom Buttons. Die Linksklick- und Rechtsklick-Funktionen funktionieren, die Rechtsklick-Funktion kann in reload_userChrome.txt deaktiviert werden.
Sicherlich können fortgeschrittene Experten dies verbessern.
Code
Alles anzeigen// reload_userChrome.uc.js // Applying changes to userChrome.css and userContent.css styles without restarting Firefox // The file reload_userChrome.txt should be in the same folder with the script window.__SSi == "window0" && CustomizableUI.createWidget({ id: "Reload_userChrome", label: "Reload userChrome", localized: false, onCreated(btn) { var u = Services.io.newURI; var code = Cu.readUTF8URI(u( u(Components.stack.filename).resolve("reload_userChrome.txt") )).replace( 'Components.utils.import("resource://gre/modules/Services.jsm", {})', "Cu.getGlobalForObject(Cu)" ); var del = function() { this.previousSibling.remove(); this.remove(); }; (this.onCreated = btn => { btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg=="); btn.defaultContextId = "toolbar-context-menu"; var win = btn.ownerGlobal; var wdp = new win.DOMParser(); var parser = class { parseFromString(...args) { var doc = wdp.parseFromSafeString(...args); doc.documentElement.lastChild.appendChild = del; return doc; } } win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50); })(btn); } });Code
Alles anzeigen// reload_userChrome.txt // Applying changes to userChrome.css and userContent.css styles without restarting Firefox // Place in the same folder as the reload_userChrome.uc.js script // To deactivate the reload function of userContent.css, comment out lines 82-88, edit tooltiptext line 11 var c = msg => Services.console.logStringMessage(String(msg)), i = obj => inspectObject(obj), n = node => inspectDOMNode(node); (obj => { this.onclick = obj.click.bind(obj); this.oncontextmenu = obj.contextmenu.bind(obj); this.tooltipText = "L: Reload userChrome.css\nR: Reload userContent.css"; })({ async click(e) { if (e.button == 1) return gShowPopup(self); if (e.button || !this.chromeSheet) return; await this.reload(this.chromeSheet); this.restyle(0); }, re: /^(?:web.*|file|extension|privilegedabout)$/, get url() { delete this.url; return this.url = `chrome://extensions/content/dummy.x${ parseInt(Services.appinfo.platformVersion) >= 74 ? "htm" : "u" }l`; }, async contextmenu(e) { if (e.ctrlKey || e.shiftKey || e.detail != 1 || !this.contentSheetURL) return; e.preventDefault(); var count = Services.ppmm.childCount, one = count == 1; var data = await this.reloadTab(this.url, one ? false : {}); if (one) this.reloadTab(); else if (data) { var url = "data:," + encodeURIComponent( self.Help + this.contentSheetURL + '", ' + JSON.stringify(data) + ");" ); for(var ind = 0; ind < count; ind++) { var child = Services.ppmm.getChildAt(ind); var rt = child.remoteType; rt && this.re.test(rt) && child.loadProcessScript(url, false); } } this.restyle(250); }, async reload(sheet, obj) { try {var style = await (await fetch(sheet.href)).text();} catch (ex) {return obj;} InspectorUtils.parseStyleSheet(sheet, style); if (obj) obj[sheet.href] = style; for(var ind = 0, len = sheet.cssRules.length; ind < len; ind++) { var rule = sheet.cssRules.item(ind); rule.type == rule.IMPORT_RULE && rule.styleSheet.href.startsWith("file:///") && await this.reload(rule.styleSheet, obj); } return obj; }, reloadTab(url, obj) { var tab = gBrowser.addTab(url, {skipAnimation: true, triggeringPrincipal: document.nodePrincipal}); tab.style.setProperty("display", "none", "important"); return new Promise(resolve => { var result, stop, destroy = () => { if (!stop) resolve(result), gBrowser.removeTab(tab), stop = true; } setTimeout(destroy, 500); try { tab.linkedBrowser.addEventListener("DOMContentLoaded", async e => { var sheet = this.getSheet(e.target, this.contentSheetURL); if (sheet) result = await this.reload(sheet, obj); destroy(); }, {once: true}); } catch(ex) { destroy(); } }); }, getSheet(doc, href) { var sheets = InspectorUtils.getAllStyleSheets(doc); return sheets.find(sheet => sheet.href == href); }, get contentSheetURL() { var file = Services.dirsvc.get("UChrm", Ci.nsIFile); file.append("userContent.css"); if (!file.exists()) return null; delete this.contentSheetURL; return this.contentSheetURL = Services.io.newFileURI(file).spec; }, get restyle() { var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var uri = Services.io.newURI("data:text/css,:root{}"), type = sss.USER_SHEET; delete this.restyle; return this.restyle = delay => setTimeout(() => { sss.loadAndRegisterSheet(uri, type); sss.unregisterSheet(uri, type); }, delay); }, get chromeSheet() { var file = Services.dirsvc.get("UChrm", Ci.nsIFile); file.append("userChrome.css"); if (!file.exists()) return null; var href = Services.io.newFileURI(file).spec; var sheet = this.getSheet(document, href); if (!sheet) return null; delete this.chromeSheet; return this.chromeSheet = sheet; } });Möglicherweise stimmen die Zeilennummern nach der Veröffentlichung des Codes nicht mit denen in den lokalen Dateien in Notepad++ überein

-
Heißt das, ich ändere Code z.B. in der userChrome.css brauche ich nur auf dem Button mit der linken Maustaste klicken,
und die Änderungen werden ohne Neustart übernommen?
Und ändere ich etwas an der userContent.css, dasselbe Prozedere mit rechts?
Ja, das ist richtig, Änderungen an userChrome.css, den darin importierten .css-Dateien, userContent.css. Ohne Firefox neu zu starten. Es funktioniert wirklich.
-
Kannst noch kurz erklären, was der Sinn und Zweck dieses Skriptes ist?
Bitte,
Die Schaltfläche wird verwendet, um Änderungen an den Stilen userChrome.css (Links-klick) und userContent.css (Rechts-klick) zu aktivieren, ohne den Browser neu zu starten. Das Skript liest die Funktionalität aus der .txt-Datei in Zeile 8, die den Code für Custom Buttons.
-
Es gibt einen Fehler in Firefox v120.0beta6, der Kontextmenüpunkt [Copy Link Without Site Tracking] ist auf allen Links vorhanden, nicht nur auf Links mit Tracking. In der Adressleiste ist es dasselbe.
-
Ich habe es selbst herausgefunden, fügen Sie nach Zeile 17 diesen Code ein
Codebtn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg=="); -
Hallo
Diese Skript erstellt eine leere Schaltfläche namens Reload ohne Icon und ohne Funktionalität. Bitte fügen Sie den Code, um eine lokale oder Ressource-Symbol anzeigen, dann mein Wissen wird genug sein, um ein Symbol meiner Wahl zuweisen.
Code
Alles anzeigenwindow.__SSi == "window0" && CustomizableUI.createWidget({ id: "Reload_userChrome", label: "Reload userChrome", localized: false, onCreated(btn) { var u = Services.io.newURI; var code = Cu.readUTF8URI(u( u(Components.stack.filename).resolve("reload_userChrome.txt") )).replace( 'Components.utils.import("resource://gre/modules/Services.jsm", {})', "Cu.getGlobalForObject(Cu)" ); var del = function() { this.previousSibling.remove(); this.remove(); }; (this.onCreated = btn => { btn.defaultContextId = "toolbar-context-menu"; var win = btn.ownerGlobal; var wdp = new win.DOMParser(); var parser = class { parseFromString(...args) { var doc = wdp.parseFromSafeString(...args); doc.documentElement.lastChild.appendChild = del; return doc; } } win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50); })(btn); } });Vielen Dank für Ihre Hilfe
-
Wie ich weiter oben schon geschrieben hatte, ist es notwendig, dass in Zeile 4 die ID des Original-Buttons eingetragen wird. Dann sollte man noch, falls vorhanden, 'Label' und 'Tooltip' auf die gleichen Werte setzen.
Mit Hilfe Ihrer Anweisungen war es einfach, die Skriptschaltfläche extras_config_menu.uc.js beweglich zu machen, die vorher nicht beweglich war. Am Ende des Hauptcodes wurde zusätzlicher Code eingefügt. -
Bitte wieder testen:
Superb!
Jetzt ist alles bestens. Vielen Dank für Ihre Hilfe und Ihre Zeit. -
und jetzt?
Geändert 8px zu 12px. Bitte beachten Sie die Hover, alle anderen Schaltflächen sind hintergrundbeleuchtet wie die auf der rechten Seite und die Schaltfläche unter Diskussion ist drastisch anders. Wenn die Schaltfläche auf der Navigationsleiste platziert ist, wenn schwebte, wird seine Hervorhebung nicht quadratisch wie alle anderen Schaltflächen, sondern rechteckig, wo die Höhe größer ist als die Breite.

-
Bitte testen: Dieses Skript zusätzlich ausführen oder an das bestehende AppMenü-Skript anhängen!
Danke, Ich habe den neuen Code am Ende des Hauptcodes hinzugefügt. Es funktioniert, aber wenn man die Schaltfläche auf der vertikalen Aris-t2-Symbolleiste platziert, bewegt sich das Symbol nach links. Wenn Sie das Symbol durch ein anderes ersetzen, bleibt der Fehler bestehen. Die Schaltflächen anderer Skripte werden korrekt angezeigt.

Wenn Sie die Schaltfläche in der Navigationsleiste platzieren, bleibt der Fehler bestehen, aber er ist nicht bemerkbar, da die Verschiebung horizontal ist.
-
Hallo,
Das Skript öffnet Firefox-Ordner und startet externe Anwendungen. Die Skript-Schaltfläche nimmt eine feste Position in der Nähe der Hamburger-Schaltfläche ein, sie kann verschoben werden, aber nur bis der Browser neu gestartet wird.
Bitte korrigieren Sie den Code so, dass die Schaltfläche vollständig verschoben werden kann und die Position beim Neustart erhalten bleibt.
Code
Alles anzeigen// ==UserScript== // @name Appmenu_Lite.uc.js // @description Basiert auf dem Script externalFuncButtonM.uc.js, Wiederherstellung der Orangenen FF-Menü Schaltfläche // @include main // @version update for Firefox 68+ by aborix // @author defpt // @charset UTF-8 // @version 2019.08.04 // ### Z.181 geändert von Toolbar in Menüleiste // zurück in Toolbar (Z.191) // https://www.camp-firefox.de/forum/thema/112673/?postID=1159814#post1159814 // ==/UserScript== var Appmenu = { // Editor mit angegebenem Pfad verwenden editor: 'notepad.exe', // in 'view_source.editor.path' eingetragenen Editor verwenden editor: Services.prefs.getCharPref('view_source.editor.path'), // Dateimanager mit angegebenem Pfad verwenden //fileManager: '""', autohideEmptySubDirs: true, // Submenüs ohne Inhalt im Hauptmenü automatisch ausblenden moveSubDirstoBottom: true, // Submenüs im Hauptmenü nach unten verschieben subdirPopupHash: [], subdirMenuHash: [], toolbar: { // Submenüs des Hauptmenüs definieren; Separator einfügen mit {name: 'separator'} subdirs: [ ], // Untermenü Firefox Funktionen apps: [{ name: 'userChrome.css', path: '\\chrome\\userChrome.css', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg==' }, { name: 'userContent.css', path: '\\chrome\\userContent.css', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADFklEQVQ4jXXR3U9bdQDG8fMHbFcjLjFRE2PIEhsTTfTOK++8UmNc2JzeaIQ0GzFBnSxLUDvs1DnCRJSgvIjsFUYXNg/Ki8IKnfQFCm3T0xZq11Eobc/pK6ft+fXrxYyhMT7Jc/l8bh5J2heLZeKxmZlQdGU1oblXtjWXN6m5fBlt2ZfRFr2aKk/Hfzt84PAj0v/lwjcLjelkTvBP8gIeFAWr6Qq3lQLTgTIX+mZ+P7AfmYjSfS0o+q9E6B9yF8cmAyVjJlrlTrjCLaXMgLfEoCeDM17E5lZxx+BM38KCdPDgIUmSJOlnP7WLdsHQSpWh1QoDrj0653L0O3K8O7bDs71/0XIjSDRdYno9hyOgsxiBiz/MLTQ0NDwqjfrQupcENwNVuhb3sPl0+hx5bKt5Prid5LneKO9PBNnN6Tg3Svy6nuXassovCrSe7uqRBjcQX3lgJAwjCnzrrHD+bpEue573bCkaL8Uwjytki2UiqoE7UWZ2o4QtbGD97s6S9NTRsz1PvH5m9PFXP/rpyTfOTjYPOIzWy25ahpd550cHb35vp3tqjVTRYFM1WNup4IjrzCfB0ntrqe6Fl196q3Ezsq0blRJqrviw2QKpfJlEocb9nCCUruJNVnCp8FnPxGIdYLXOPq1Es/oesFuCnSIkCrCVrxHPGsQ0QSRtEEhV8Rfgk0s364GOjkmTP5LRCwK2C4KtvCCeE9zPCmJZQVQ1iKhVQqpAKUFH93g90N4+bvKGUrpWhQf7h5ogouko2Sz2eBRHPE9Yh/avx+qBtrYrJldwV09X+Xe4oQoiWo3lrTh3E2HkYIZR/xoezeDjL/8DDJuWAkk9WYZNTRBWBUrmYWeDGtfXfVz1xBj88x72ZIXTX1yvB06dGjbN+5J6ogwhtUYwLQikBYGMYH6zwohTYdC+zpgzgTsHbZ9frQdaWoee+SOQZxuI6hDZA6UE/iKs5cCegLkYONLg0qHt/A1PHXDkyAuHXjvx4eW3T1qmTpgt8nGzRT7Wck4+2nxObmrulJvMVvmY2So3NXfKx09ap55/8ZVP/waJWLfEOCt3rAAAAABJRU5ErkJggg==' }, { name: 'user.js', path: '\\user.js', image:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqMU11IFFEU/vbO7Iyuums/GvmXhISBiOWWGFgGiyaC0UMkWRT11FNPQbEl9iNb0mtgUEQW+xjUQ5RrlClZ5IbaQ0bpw+paSGLGbrs7O3emc2d/kKjowBnm3HvnO9/5vju2Tb4ARJiUOjcQ1fhizUZnkVORsBzXMT7/HZLNZp0RT8ZssEuUjEGVWZWMdJimibhuXO4/UFvUWVeKf0Xg0yJcOXa03359i2UWDQKIackTmY91qkXyVWmmz/qezyBBbCvX5TXLGfpUo7mquETUEY1bgKtD0JeIvsMu4cXsNxz2R6DIDHJGAOqQX6CmyjjnEN/bfqPuYJIFrPLY5Ly346RYyzLQE/Hq7SUu66CWNFJd0+KZaTYFioxgeAV2mKH1vYPBfFVCWgOa0eB76stcpHwSmmFAQMiktkjxLpJUR2glBtlIzArsn9QoxYAaGJxXr8lVECHruGHSrEDxhccWfLinLcXozEM4cmTkJmITWVuzNkpKQ32pC1GuW1039DzB6OlWSCQaSUoacTCJYfiUB2ZRxR3RRAzGLAeIQmFeTrkAUumCVF4ZxMCR3bg0HLaU13UDMaJr0GjnhkLoP9gIjXNT1CxJUHT7zKhuFO68MYKqa8/g62jEgw/LePP5I3ZVroV/cgGin9m3HyPT0/BPLcHbskOMasoJQl+52Ja1ip19hIWoBofKLG2ut29Fp/8duraVIvwjBiGe2AtHEpYIjGnRt30vZxCizTnKJRLs7qsp5NOdONRQi703x9Dt2QInWbj56hC6GutQoNpxb+w9vpzf57Y5Pcc9SlNngEaxRJFpZoVEFN4fbarDwMhkyiXaFYofo7X7oxP42t3mrvAFgsIJlbLmTz9NWe/TcRvxnPO2uEVd3js4LrSY97a66S8O4j+iPp1/q/FLgAEAGto2bg8Nx1UAAAAASUVORK5CYII=' }, { name: 'separator' }, // Lokaler Pfad { name: 'Profiles folder', path: '\\', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAABqUlEQVQ4jZWRvYsTURTFf2/mhYiwIqjFEvxYRIlVQFgUbC0strSwsxC009ZuwcZa7AT9G0QrEW0EWUUEBbVQBDG6hKjrJqvJvDfvXot5SWZMNuLAhXnnnnPulwG4f31f68jyymWTpqAKCL3up87LR49XL93CM+ez91bZ2zp94e7+5qlDIKA5qEfy39TqtWM36g/OXblJtp2Beffw/Frz5NkTZTGagWZIGNB+/+KLIWyNc3iCG+Rvnj2/uHK1/9R8fX0tLC61koLgYmSTkBImI9zRXW/3Xj1ZO2PRUeWq0A02Gf7aiLgvmXuMOnbUk12Nw43bFvKx60i82f3MoP+Nhd0LoCEa5KA5EjI0mqVpqNnv7beI60VSQez/7NA8vhxbTkBNDIorKaCw0U132j2NJRYPHq12IQdK85a7cxXMJgGLOJDhhCDbiaaXK+JqFhzVjc+rWuWkJqR2fPd/VZ7KZ6AuKQzmzTtbGHFft4gHHc4Q/tW6To9qTI4F/9/CESbB10o7mH2qiXh6PJP4xK5//HCn/6OTIDkQQwPgQQIQ/zUUOYlvAlu9IH8ApVrKnkSFVL8AAAAASUVORK5CYII=' }, { name: 'Chrome folder', path: '\\chrome', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAABqUlEQVQ4jZWRvYsTURTFf2/mhYiwIqjFEvxYRIlVQFgUbC0strSwsxC009ZuwcZa7AT9G0QrEW0EWUUEBbVQBDG6hKjrJqvJvDfvXot5SWZMNuLAhXnnnnPulwG4f31f68jyymWTpqAKCL3up87LR49XL93CM+ez91bZ2zp94e7+5qlDIKA5qEfy39TqtWM36g/OXblJtp2Beffw/Frz5NkTZTGagWZIGNB+/+KLIWyNc3iCG+Rvnj2/uHK1/9R8fX0tLC61koLgYmSTkBImI9zRXW/3Xj1ZO2PRUeWq0A02Gf7aiLgvmXuMOnbUk12Nw43bFvKx60i82f3MoP+Nhd0LoCEa5KA5EjI0mqVpqNnv7beI60VSQez/7NA8vhxbTkBNDIorKaCw0U132j2NJRYPHq12IQdK85a7cxXMJgGLOJDhhCDbiaaXK+JqFhzVjc+rWuWkJqR2fPd/VZ7KZ6AuKQzmzTtbGHFft4gHHc4Q/tW6To9qTI4F/9/CESbB10o7mH2qiXh6PJP4xK5//HCn/6OTIDkQQwPgQQIQ/zUUOYlvAlu9IH8ApVrKnkSFVL8AAAAASUVORK5CYII=' }, { name: 'CSS folder', path: '\\chrome\\CSS', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsSAAALEgHS3X78AAABQklEQVQokWP03NZ67s19BuKAnpA882d3pX////9nYCAGvfj+gYlIs+GAZA0M4otSnnx5+/ffv7///r34+l50Vjx+LgsDA4Mkl+Ds45t///2TZRP49/E7/FwWiD2nHl3fdv3Ejhun/v35i5/LAnfbj9+/jt6/zMDA8O//vwrnaCMZtd03z2BysXg6bGHDvtvn3DXM1iU1MzIyonERGthZWM3ltRgYGL7+/N6wc37TzoVMjEyMGFyok4xl1HUllfLsgkVq/Lakds44tpGB4T9ECo3LwsDA8Pr7xyybAAYGhjdfPzL8Z3j77WOubRCE+x+Dyyi+KOXfj99/H79j+Pvv/3+G/wz/GRkYGRkZGBgYsHKZIM5nkhX8x8T4n+E/AwPDf4b///7///f/P1Yu1NOM7KwsckIMzIRTCpOukDzxenQkFQF0hPh3MT13CgAAAABJRU5ErkJggg==' }, { name: 'separator' }, // Run external applications { name: 'Notepad', path: 'C:\\Windows\\notepad.exe', image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACoUlEQVQ4jaWTzYtVdRjHP7/febln7rnee53ROSEZQotBcpGgiwiamGghUjT9ASG4cVO0HNoOroJ2BkJughBBpDZilIW50jB1AhXipjWT4Ghz7znn3vP2e2sxpBMMuOi7eeCB58P3efg+8D8ltmt+d/Xqmw8e/DkXRuFfQspVJ8TaB4uLG0II91zAp9/eig/PuJVbt3/ZK6AWzmqHcJ6UqVXVoK6K339dufHFl2fOXt8WMNjIPtkdR8vKOjkaT3g0TFldf8J6mpJmY6xWBMW6Hf/w2b6T5war/tbhr+/+scf3xPFh2eB5EhGExP0+SdSGSQVFRVrWzD40cuTMNPBfQL8dfFwo6xzIvKgAaIwlqxWVNtTakEQBLWeojekCPAV8fv3OgXFjXqvNZNQOfBywUdaUytAYQ9ooKqU5vGuae5MxgS96zwDOiernu8dW82IYeV4QhwEOsM4xrBryRlEbQ0c4kjjiZlnirP/MwUff33j9vnMzoS+Hu1ph0p+yaGtRZrMWSlMpzcGkj9WKosixsOngw4sXW3ce/X3UCTmJQl/s73c6xlmMdU8h1jm6niCJIybjHN2UIOUmYGWdd34bjXZKhPU94ZJAJlXT4IB/U+MJOJT00dqg8jFNkdEKg80Vdvc6R8J4x0uPx5NCN40slZop6wZwCARCCGYjnxfjKazRZHmGrnJ63U4PQJ5ffOP49OTxiYPT0VfvvvxCP9nRYSqOIWxROyiV4pWdHbTROGMYpRlOFcgwmgU8H+DcsfcHwODylStr7V77vWEjFjIZvbpWGy+rFfu6bZTWTEnBMB0xzOsV6dnbgNj2mQCWlpZm5hfenu9047ec8Be8VmtO16W4dPnHny59c+HEzWvX7m0503MllpeX9546fXp+a/gA/gHvcVhlUwp3wwAAAABJRU5ErkJggg==' }, { name: 'separator', }, ], // Firefox Funktionen definieren configs: [ { name: 'Clear History', command: "Sanitizer.showUI(window);", id: 'AMsanitize', image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACh0lEQVQ4jZWRa0jTARTFTyoYWqSpJGpEFGJ9sZIekFGZ5aOHJBSRkJhEho5AqIVmrBrLuU3BjNK9tBeZFSYZgSn5RDJTVNTmNNLN5eaDfMxw/j19E8QsvZ/v78e59+DaUey/eRyGtCgMiCMRgZVOWhTMz6+4sUTkzvRoTN2IQPiKBOlRGClLXcPqDA8WJ7sxPRoGCeCkluNOngxe/xWII3BVFus0+TFtHaszPCg9jfF8Kb5qFKBajm3LCeGUFo0HkpOYLLvuzqLMVax6s3OuVB8wrs7CgWWfIkvEbU0m5porD9PWJ2Zp0obpwj0w6bPRplFAnCuDz5KwRoHzOhXs3Y0xHDYmsVEUwhL/tex6e5FWYyqbKsOmH+estutV0D+Uwn+xQI54rRK2imdB9oroIH7Yt5H27gQK1kQKthQKoxn8bc3kl6rwGX22y7ROhSfqezgkkcBpXpIrgmvhVnS9Cls/67BKKQwnUxiTUhgWURiKpcMczomBS7T1itlSHTn3Wus3oVXAujDJLcR/Kg2eEsayKFjjKdgSKAzFUhgM5UTPdlpafWls8KCpLYr9HZepV2JogeC+HH5P8zynHSMKzppD6TDtpb0vmKNdW2hu9mZPrQsNNc4c7DzL+vchDp0KLxb9ozAbHb0tFzhiOEZLqy8HmjxprHOlocaZhhpnmtpP0Nh8jnqV86RajoBFgkdyHHlZ4Gf/aUihsd5jHjQ2+NDSFcfOxjNzhTkuvwqycHDJWnUq1NeX756xdMfz++dAmjtO0fJNxLp3uxxaFQYLZAhcEgaAPBm8dEr0t9XGCD/a49hQvmOmKMfVrlOiOF8C73/C8xIpNmmUGNEpMaxVQqe+i81/2/sDdNth33v8JSgAAAAASUVORK5CYII=" }, ] }, _externalAppPopup: null, _isready: false, init: function() { var isUrlbar = 1; // 0: TabsToolbar; 1: navbar this.handleRelativePath(this.toolbar.apps); const XULNS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'; var ExternalAppBtn = document.createElementNS(XULNS, 'toolbarbutton'); ExternalAppBtn.id = "AppMenuButton"; ExternalAppBtn.setAttribute("label", "AppButton"); ExternalAppBtn.setAttribute("onclick", "event.preventDefault();event.stopPropagation();"); ExternalAppBtn.setAttribute("tooltiptext", "Firefox Menü"); ExternalAppBtn.setAttribute("type", "menu"); ExternalAppBtn.setAttribute("removable", "true"); if (isUrlbar) { document.getElementById("nav-bar-customization-target").appendChild(ExternalAppBtn); ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAA6SURBVDhPYxgcIDg+6z8IQ7lwPiEMVT4YDBh4gO4kZGfiw1Dlg8GAgQfoTkJ2Jj4MVT4YDCAfMDAAAFSm42US1bMnAAAAAElFTkSuQmCC)"; } else { ExternalAppBtn.style.listStyleImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAUCAYAAAAwaEt4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF3SURBVFhH7ZUxS8RAEIX9M1fb29vb+wP8AdaCYCVY2FmInY1YWmlrp7WtNp6ihyKKCDYrb7kPxsuMJiG5CO6DR5LZmd2Zl9ndhduNUSqssggTsAgTsAgTsAgTsLEw71enyYPGHvZW8vvHzUUlrinvd5e/reX59Mk/K8zn5DrPBTyfPtlamOeTTXe8K4LHg1V3vG92KgwdI2ADT8fr+UmcfNVZ4OVspzIH0Joau9teSq/n+1Nryl1l8yA3/LUdgWLxq8NOthKJ/CQMUCE2YQuJEwkz3lqsbC+AOCoeaB5y1U8hn7qcmzB0hArkr79dHuVvhFLhs3GaU9+Tw7WpJWV/2SQIIA4bIpJbU85tK1Gg6IkLojgKtoV664kWbc+oQYRRpwh0DHZLQJztGM6LOh3T9oYcRBjrZ2F9ADYJGIFcZg9bxPFy/Y2DCCOqxe2tpHd7cwAbp3G6TVDh9mBlPp1h+va6rC4bC/NfWIQJWIQJWIQJWIRxOUpfQ+jqXwPuQ7IAAAAASUVORK5CYII=)"; var TabsToolbar = document.getElementById("nav-bar"); TabsToolbar.insertBefore(ExternalAppBtn, TabsToolbar.firstChild); } var ExternalAppPopup = document.createElementNS(XULNS, 'menupopup'); //ExternalAppPopup.setAttribute('onpopupshowing', 'event.stopPropagation(); Appmenu.onpopupshowing();'); ExternalAppPopup.setAttribute('id', 'AMpopup'); this._externalAppPopup = ExternalAppPopup; ExternalAppBtn.appendChild(ExternalAppPopup); Appmenu.onpopupshowing(); }, onpopupshowing: function() { if (this._isready) return; if (this._externalAppPopup === null) return; var ExternalAppPopup = this._externalAppPopup; for (let subdir of this.toolbar.subdirs) { if (subdir.name == 'separator') { ExternalAppPopup.appendChild(document.createXULElement('menuseparator')); } else { var subdirItem = ExternalAppPopup.appendChild(document.createXULElement('menu')); var subdirItemPopup = subdirItem.appendChild(document.createXULElement('menupopup')); subdirItem.setAttribute('class', 'menu-iconic'); subdirItem.setAttribute('label', subdir.name); subdirItem.setAttribute('image', subdir.image); Appmenu.subdirPopupHash[subdir.name] = subdirItemPopup; Appmenu.subdirMenuHash[subdir.name] = subdirItem; } } for (let app of this.toolbar.apps) { var appItem; if (app.name == 'separator') { appItem = document.createXULElement('menuseparator'); } else { appItem = document.createXULElement('menuitem'); appItem.setAttribute('class', 'menuitem-iconic'); appItem.setAttribute('label', app.name); appItem.setAttribute('image', app.image); appItem.setAttribute('oncommand', "Appmenu.exec(this.path, this.args);"); appItem.setAttribute('tooltiptext', app.name); appItem.path = app.path; appItem.args = app.args; } if (app.subdir && Appmenu.subdirPopupHash[app.subdir]) Appmenu.subdirPopupHash[app.subdir].appendChild(appItem); else ExternalAppPopup.appendChild(appItem); } for (let config of this.toolbar.configs) { var configItem; if (config.name == 'separator') { configItem = document.createXULElement('menuseparator'); } else { configItem = ExternalAppPopup.appendChild(document.createXULElement('menuitem')); configItem.setAttribute('class', 'menuitem-iconic'); configItem.setAttribute('label', config.name); configItem.setAttribute('image', config.image); configItem.setAttribute('oncommand', config.command); configItem.setAttribute('tooltiptext', config.name); configItem.setAttribute('id', config.id); } if (config.subdir && Appmenu.subdirPopupHash[config.subdir]) { Appmenu.subdirPopupHash[config.subdir].appendChild(configItem); } else { ExternalAppPopup.appendChild(configItem); } } if (this.autohideEmptySubDirs) { for (let i = 0; i < Appmenu.subdirPopupHash.length; i++) { if (Appmenu.subdirPopupHash[i].hasChildNodes()) { continue; } else { Appmenu.subdirMenuHash[i].setAttribute("hidden", "true"); } } } if (this.moveSubDirstoBottom) { let i = ExternalAppPopup.childNodes.length; while (ExternalAppPopup.firstChild.getAttribute('class') != 'menuitem-iconic' && i-- != 0) { ExternalAppPopup.appendChild(ExternalAppPopup.firstChild); } } this._isready = true; }, handleRelativePath: function(apps) { for (let app of apps) { if (app.path) { app.path = app.path.replace(/\//g, '\\'); var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get("ProfD", Ci.nsIFile).path; if (/^(\\)/.test(app.path)) { app.path = ffdir + app.path; } } } }, exec: function(path, args) { args = args || []; var args_t = args.slice(0); for (let arg of args_t) { arg = arg.replace(/%u/g, gBrowser.currentURI.spec); } var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); file.initWithPath(path); if (!file.exists()) { //Cu.reportError('Datei nicht gefunden: ' + path); alert('Datei nicht gefunden: ' + path); return; } if (file.isExecutable() && !path.endsWith('.js')) { var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); process.init(file); process.run(false, args_t, args_t.length); } else if (file.isFile()) { if (this.editor) { let UI = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); UI.charset = window.navigator.platform.toLowerCase().includes('win') ? 'Shift_JIS' : 'UTF-8'; let path = UI.ConvertFromUnicode(file.path); let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); app.initWithPath(this.editor); let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); process.init(app); process.run(false, [path], 1); } else { file.launch(); } } else if (file.isDirectory()) { if (this.fileManager) { let app = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); app.initWithPath(this.fileManager); let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); process.init(app); process.run(false, [path], 1); } else { file.launch(); } } }, }; if (window.gBrowser) Appmenu.init();Dies ist ein leichtgewichtiges Skript, das ursprüngliche Skript mit denselben Funktionen finden Sie hier
Vielen Dank für Ihre Hilfe
-
...\Firefox\private_browsing.exe
-
und wieder eckig gestalten
-
Teste bitte:
Super!
Herzlichen Dank -
-
wie kann ich Font Farbe zu rot ändern
userChrome.css