Oder:
Öffne den Profilordner, dann gehe zwei Ebenen nach oben und du bist im Ordner 'Firefox'. Dort befindet sich die profiles.ini.
Beiträge von aborix
-
-
EffPeh:
Im ersten Beitrag ist der Link am Ende falsch. -
Im Installationsordner befindet sich ein Ordner uninstall und darin eine Datei helper.exe. Mit Doppelklick darauf lässt sich Firefox ebenfalls deinstallieren.
-
Kann die Datei gefahrlos gelöscht werden ?
Ja.Wenn das Test-Skript auch nicht funktioniert, teste die Skripte in einem neuen Profil.
-
@ Spiderman-21:
Funktioniert dieses Skript: https://www.camp-firefox.de/forum/viewtopi…054598#p1054598 ?
Die Datei userChrome-example.css war vor sehr langer Zeit standardmäßig im Profil enthalten. Das deutet auf ein sehr altes Profil hin. Wie alt ist dein Profil?
-
Das sollte in die Skriptliste aufgenommen werden!
Endor hat das ebenfalls angeregt und die Aufnahme in die Sammlung ist bereits geplant.
Zitat
Wie wäre es mit „statusbar.uc.js“? Ich würde allerdings geänderte ID vorschlagen und zu Beginn per Kommentar auf die Möglichkeit der Beeinflussung per CSS hinweisen.Mein Vorschlag für die IDs ist 'bottom-toolbar' und 'bottom-toolbar-vbox'. Die Leiste ist eine Symbolleiste wie die anderen auch und hat keine speziellen Eigenschaften der früheren Statusleiste. Ein Hinweis für die Gestaltung mit CSS ist auch geplant.
-
nein, dieses: browser.tabs.warnOnCloseOtherTabs auf false setzen
-
zur Liste der ab Fx 57 nicht funktionierenden Skripte:
Hier ist auch BacktoTop.uc.js aufgeführt...dieses Script funktioniert hier aber in 57.0 bis 59.0a1Bei mir auch. Bei wem funktioniert was nicht?
-
Eventuell eine, wohl wie so oft durch Zufall, sehr wichtige gewonnene Erkenntnis.
Ich würd mal sagen, dass sollte schnellsten Kamerad aborix erfahren und ggf. ins Visier nehmen.Zuallererst braucht man die neuere Variante mit dem Ordner
:Die config.js [...] 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); };[...] und es kommt ein Ordner userChromeJS hinzu.
und außerdem
: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):[...]
Nach Änderungen in der userChrome.js hingegen ist nach wie vor ein Neustart mit Skript-Cache leeren erforderlich.so gemacht?
-
Ja, seitdem Firefox mit mehreren Prozessen läuft, ist das so. Für den Zugriff auf Webseiten-Inhalte braucht man ein Frame Script. Damit geht's:
Codefunction frameScript() { addEventListener('dragstart', function() { console.log('dragstart'); }); }; var frameScriptURI = 'data:,(' + frameScript.toString() + ')()'; window.messageManager.loadFrameScript(frameScriptURI, true);Die Sache ist nicht trivial:
MDN - Multiprocess Firefox - Message Manager -
Vor e10s war content auf Browserebene das gleiche Objekt wie window auf der Inhaltsebene von Webseiten. Seit e10s kann man auf Browserebene auf dieses window nicht mehr direkt zugreifen und damit auch nicht auf die Unterobjekte wie z.B. document und damit auf die ganze Webseite nicht. content hat den Wert null. Das ist genau die Schwierigkeit, die immer dann auftritt, wenn ein userChromeJS-Skript mit e10s nicht mehr funktioniert, weil es auf den Inhalt von Seiten zugreift. (GM-Skripte betrifft das nicht, denn die operieren ohnehin nur im Inhaltsbereich.) Damit der Zugriff möglich ist, benötigt man ein sog. Frame Script, und das hat mit dem Ausgangsskript keine Variablen gemeinsam und die beiden müssen über Hin-und Hersenden von Mitteilungen und Daten miteinander kommunizieren... das Ganze ist manchmal recht mühsam. Also kein einfacher Ersatz.
-
-
Vielleicht am einfachsten so:
Nimm dieses leicht veränderte Skript:Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xul') return; var tb = document.createElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createElement('vbox'); vbox.id = 'new-toolbar-vbox'; document.getElementById('navigator-toolbox').parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); })();und dann lege die Farbe in der userChrome.css fest, z.B.
-
Mit einem userChromeJS-Skript geht es. Wenn nur F12 funktionslos werden soll, ist es einfacher, den erforderlichen Code gleich in die Konfigurationsdatei zu geben.
Erstelle dazu eine Textdatei namens "config-prefs.js" mit folgendem Inhalt und gib sie in den Unterordner \defaults\pref des Firefox-Installationsordners:
Außerdem erstelle eine Textdatei namens "config.js" mit folgendem Inhalt und gib sie in den Installationsordner:
Code
Alles anzeigen// const Cu = Components.utils; try { Cu.import('resource://gre/modules/Services.jsm'); let listenOpen = { observe: function(aSubject, aTopic, aData) { if (aTopic != 'domwindowopened') return; let window = aSubject; window.addEventListener('load', function() { window.setTimeout(function() { if (window.location == 'chrome://browser/content/browser.xul') { let keyF12 = window.document.getElementById('key_toggleToolboxF12'); keyF12.setAttribute('disabled', 'true'); }; }, 100); }, {once: true}); } }; Services.ww.registerNotification(listenOpen); } catch(e) { Cu.reportError(e); };Jetzt neu starten und bei F12 geschieht nichts.
Weitere Informationen zur Konfigurationsdatei gibt es hier:
Mike Kaply - Customizing Firefox – Autoconfig Files -
C:\Users\[Benutzername]\AppData\Local\Mozilla\Firefox\Profiles\[Profilname]\startupCache
-
Hallo,
zu 1.:
In about:config setze browser.tabs.insertRelatedAfterCurrent auf false.zu 2.:
Sieh dir die Erweiterung New Tab Override an. -
Außer händisch löschen gibt es noch andere Möglichkeiten:
- mit Kommandozeile und Parameter starten,
- Neustart-Skript,
zu beidem siehe Skriptcache,- in die userChrome.js am Anfang hineinschreiben:
siehe dazu https://www.camp-firefox.de/forum/viewtopi…053287#p1053287, letzter Abschnitt -
Alles Gute!

-
Das war etwas knifflig, lässt sich aber doch machen.
Der Eintrag ist jetzt im Tab-Kontextmenü.Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xul') return; let tabContextMenu = document.getElementById('tabContextMenu'); let historyPopup = document.getElementById('goPopup'); let refItem = document.getElementById('context_undoCloseTab'); tabContextMenu.addEventListener('popupshowing', function(event) { if (event.target != this) return; historyPopup.style.visibility = 'collapse'; historyPopup.showPopup(); document.getElementById('historyUndoPopup').showPopup(); let dblHistoryUndoMenu = document.getElementById('historyUndoMenu').cloneNode(true); dblHistoryUndoMenu.removeAttribute('id'); dblHistoryUndoMenu.getElementsByTagName('menupopup')[0].removeAttribute('id'); tabContextMenu.insertBefore(dblHistoryUndoMenu, refItem); }); tabContextMenu.addEventListener('popuphiding', function(event) { if (event.target != this) return; tabContextMenu.removeChild(refItem.previousSibling); historyPopup.style.visibility = 'visible'; }); })();Wenn du das Chronik-Menü ausblendest, funktioniert bei display: none das Skript möglicherweise nicht. Mit visibility: collapse klappt es.
Die Zeilen
historyPopup.style.visibility = 'collapse';
und
historyPopup.style.visibility = visible';
brauchst du dann nicht.Edit: Skript korrigiert
-
Es dauert manchmal etwas, bis die neuen Versionen hier stehen:
https://github.com/ardiman/userChrome.jsBis dahin stehen die meisten hier:
https://github.com/Endor8/userChr…ster/Firefox-57externalApplications.uc.js hab ich jetzt auch nicht gefunden.
Das ist die neueste Version für Fx 57, die ich habe:Code
Alles anzeigen// ==UserScript== // @name externalApplications.uc.js // @namespace ithinc#mozine.cn // @description External Applications // @include main // @compatibility Firefox 3.5.x 3.6.x 17.01 // @author ithinc // @version 20091216.1.0.0 Final release // @version 20091215.0.0.2 Handle toolbar apps and menu apps separately // @version 20091212.0.0.1 Initial release // ==/UserScript== /* :::: External Applications :::: */ var gExternalApplications = { toolbar: { apps: [ {name: 'Notepad++', path: 'C:\\Program Files (x86)\\Notepad++\\notepad++.exe'}, {name: 'Microsoft Outlook', path: 'C:\\Program Files\\Microsoft Office\\OFFICE14\\Outlook.exe'}, {name: 'Videolan Player', path: 'C:\\Program Files (x86)\\VideoLAN\\Vlc\\vlc.exe'}, {name: 'Windows Explorer', path: 'C:\\Windows\\explorer.exe'}, {name: 'WinMergeU', path: 'C:\\Program Files (x86)\\WinMerge-2.14.0\\WinMergeU.exe'}, {name: 'CarotDAV', path: 'C:\\Program Files (x86)\\CarotDAV\\CarotDAV.exe'}, {name: 'Pickpick', path: 'C:\\Program Files (x86)\\picpick\\picpick.exe'}, ], insertafter: 'menubar-items' //'menubar-items' or 'home-button' }, menu: { apps: [ {name: 'Notepad', path: 'C:\\WINDOWS\\system32\\notepad.exe'}, {name: 'Rechner', path: 'C:\\WINDOWS\\system32\\calc.exe'}, {name: 'DOS', path: 'C:\\WINDOWS\\system32\\cmd.exe'}, {name: 'separator'}, {name: 'UltraSearch', path: 'C:\\Program Files (x86)\\UltraSearch\\UltraSearch.exe'}, {name: 'Windows Explorer', path: 'c:\\windows\\explorer.exe'},/*x为系统盘符*/ {name: 'Internet Explorer', path: 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE', args: ['%u']},//外部浏览器打开当前页,使用参数%u ], id: 'ExternalApplicationsMenu', insertafter: 'menu_openAddons', //'helpMenu', 'tools-menu' oder 'browserToolsSeparator' label: 'Externe Anwendungen', accesskey: 'A' }, init: function() { this.handleRelativePath(this.toolbar.apps); this.handleRelativePath(this.menu.apps); if (this.toolbar.apps.length > 0) { var refNode = document.getElementById(this.toolbar.insertafter); if (refNode) { refNode.parentNode.insertBefore(this.createToolbaritem(this.toolbar.apps), refNode.nextSibling); } } if (this.menu.apps.length > 0) { var refNode = document.getElementById(this.menu.insertafter); if (refNode) { var menu = refNode.parentNode.insertBefore(document.createElement('menu'), refNode.nextSibling); menu.setAttribute('id', this.menu.id); menu.setAttribute('label', this.menu.label); menu.setAttribute('accesskey', this.menu.accesskey); menu.appendChild(this.createMenupopup(this.menu.apps)); } } }, handleRelativePath: function(apps) { for (var i=0; i<apps.length; i++) { if (apps[i].path) { apps[i].path = apps[i].path.replace(/\//g, '\\'); var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('CurProcD', Ci.nsIFile).path; if (/^(\.)/.test(apps[i].path)) { apps[i].path = ffdir + '\\' + apps[i].path; } else if (/^(\\)/.test(apps[i].path)) { apps[i].path = ffdir.substr(0,2) + apps[i].path; } } } }, exec: function(path, args) { args = args || []; for (var i=0; i<args.length; i++) { args[i] = args[i].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('File Not Found: ' + path); return; } if (!file.isExecutable()) { file.launch(); } else { var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); process.init(file); process.run(false, args, args.length); } }, createToolbaritem: function(apps) { var toolbaritem = document.createElement('toolbaritem'); toolbaritem.id = 'ExtAppButtons'; toolbaritem.setAttribute('class', 'chromeclass-toolbar-additional'); toolbaritem.setAttribute('orient', 'horizontal'); for (var i=0; i<apps.length; i++) { if (apps[i].name == 'separator') { toolbaritem.appendChild(document.createElement('toolbarseparator')); } else { var item = toolbaritem.appendChild(document.createElement('toolbarbutton')); item.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional'); item.setAttribute('label', apps[i].name); item.setAttribute('image', 'moz-icon:file://' + apps[i].path + '?size=16;'); item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);'); item.setAttribute('tooltiptext', apps[i].name); item.setAttribute('style','margin: 0px 0px;background: none;box-shadow: none;border-color: transparent;'); //dawlen add item.path = apps[i].path; item.args = apps[i].args; } } return toolbaritem; }, createMenupopup: function(apps) { var menupopup = document.createElement('menupopup'); for (var i=0; i<apps.length; i++) { if (apps[i].name == 'separator') { menupopup.appendChild(document.createElement('menuseparator')); } else { var item = menupopup.appendChild(document.createElement('menuitem')); item.setAttribute('class', 'menuitem-iconic'); item.setAttribute('label', apps[i].name); item.setAttribute('image', 'moz-icon:file://' + apps[i].path + '?size=16'); item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);'); item.path = apps[i].path; item.args = apps[i].args; } } return menupopup; } }; gExternalApplications.init();