Na wunderbar! Da konnten der ganze Zoo :mrgreen: und der Meister der Zahnräder dir doch noch helfen.
Suche in URL-Feld in neuem Tab öffnen
-
Filou -
18. Dezember 2017 um 10:48 -
Erledigt
-
-
Absolut. Ich bin total begeistert. Nicht nur, dass ich eine Pendenz weniger habe. Auch der Ton hier und Eure Ausdauer machen mir grosse Freude.
Danke !
-
Gern geschehen.
Wie heißt es so schön? "Bitte empfehlen Sie uns weiter."
-
Auch der Ton hier und Eure Ausdauer
Wenn jemand Hilfe möchte...freundlich danach fragt...dann bekommt er auch immer eine freundliche Antwort. :wink:Und Ausdauer die gehört dazu, denn letztlich soll die Hilfe ja zum Ziel führen.
Für die Aussage von dir mal ein Danke, sowas liest man als Helfer natürlich immer gerne -
Für die Aussage von dir mal ein Danke, sowas liest man als Helfer natürlich immer gerne
Dem schließe ich mich an. -
Laut aborix gab bzw. gibt es auch keinen Grund daran etwas zu ändern.PS:
Ich werde das hier aber trotzdem mal machen, damit meine Screenshot passen für die neue Variante. :wink:Moin,
es geht noch mal um die Datei "userChromeJS.js"
Habe folgendes feststellen müssen, nachdem ich eine portable Version 58.0b11 auf dem Stick neu eingerichtet habe.
Die Inst nach dem neuen Modell vorgenommen (ohne die userChromeJS.js im Programmordner), musste jedoch feststellen, dass meine Scripte aus dem Chrome-Ordner nicht aufgerufen wurden.
Löschen Cache und auch Start mit deaktivierten Addons halfen nicht.Erst nach Einfügen o.g. Datei klappte alles wieder wie sonst auch.
Ergo: die Datei scheint ja doch wohl nicht so ganz unwichtig zu sein; oder?
Zumindest bei Neueinrichtung? -
die Datei scheint ja doch wohl nicht so ganz unwichtig zu sein; oder?
Du hast das komplett falsch verstanden :wink:Mit der Datei war die "alte" Installation...bei der "neuen" gibt es einen Ordner mit der Bezeichnung userChromeJS.js, und dann müssen auch noch alle anderen Dateien angepasst werden.
Siehe bitte hier die Beschreibung dazu:
-
Mit der Datei war die "alte" Installation...bei der "neuen" gibt es einen Ordner mit der Bezeichnung userChromeJS.js, und dann müssen auch noch alle anderen Dateien angepasst werden.
Jetzt bin ich verwirrt. Wenn ich die firefox-anpassungen.zip entpacke, erhalte ich die Ordner chrome, userChromeJS und die Dateien config.js und config-prefs.js. Es handelt sich hier um den Ordner userChromeJS, nichts da mit userChromeJS.js. Innerhalb des Ordners chrome habe ich dann die Datei userChrome.js. Andreas, du hast wieder gemixt. -
Jaaaa... der Andreas scheint etwas abgelenkt zu sein... unkonzentriert... <;)
Du wirst doch wohl nicht nebenher noch arbeiten. :mrgreen::lol::lol:
-
Du hast das komplett falsch verstanden :wink:Moin,
ich habe gewiss schon ein gutes Alter erreicht, bin aber noch nicht ganz von gestern.
Diesen besagten Ordner "userChromeJs" habe ich natürlich im Prog-Verzeichnis eingefügt - trotzdem waren meine Scripte nicht angestoßen worden.
Erst nach Einfügen der Datei userChromeJS.js lief meine FX 58.0b11 normal.Inzwischen habe ich die Datei umbenannt (nicht Ordner!!) - und damit ist auch alles OK!
Die obige Anmerkung von mir halte ich weiterhin für nicht "unwichtig!"
-
Erst nach Einfügen der Datei userChromeJS.js
Die habe ich gar nicht, sonden nur den Ordner mit dem Namen userChromeJS :wink:
[attachment=1]Screenshot (297).png[/attachment]
[attachment=0]Screenshot (298).png[/attachment]Du hast alle anderen Änderungen dazu auch gemacht!?
Es geht nämlich nicht NUR um diese eine Datei bzw. nicht einfach darum diese Datei nur umzubenennen. -
andreas
Ich kann doch nur sagen, wie ich die Inst vorgenommen habe.
Ganz so, wie in dem Link von Dir angegeben, habe ich die Dateien und den Ordner entsprechend im Prog-Verzeichnis und auch im Chrome-Ordner eingetragen.
Ich hatte noch ein funktionierendes Profil meiner portablen Vorversion, welches ich nach der Neuinst FX 58.0b11 eingefügt habe.
Der Portable FX zeigte beim Start keine Fehler - machte sogar ein (funktionierendes) Update auf 58.0b12.Nur fehlten eben Wetterbutton - ExtrasConfigMenü - Uhr+Titlebar - Restart-Pfeile etc.
Die waren jedenfalls nach Einfügen der userChromeJS.js-Datei wieder alle vorhanden!Ich habe mir das doch nicht ausgedacht - um jemanden damit zu ärgern.
-
Ich habe mir das doch nicht ausgedacht - um jemanden damit zu ärgern.
Das sagt ja auch keiner, trotzdem ist da ein Fehler vorhanden :wink:Die Datei userChromeJS.js ist hier nicht (mehr) vorhanden und wird auch nicht mehr benötigt, wenn man die neuen Anpassungen vornimmt.
Die "neuen" Dateien haben zwar den selben Namen wie die alten, aber einen anderen Inhalt.
-
Diesen besagten Ordner "userChromeJs" habe ich natürlich im Prog-Verzeichnis eingefügt - trotzdem waren meine Scripte nicht angestoßen worden.
Ich will dich ja nicht noch mehr verwirren. Aber du solltest Groß- und Kleinschreibung genau beachten. Der Ordner heißt "userChromeJS", mit großgeschriebenem "S" hinten. Im Ordnernamen ist es "JS", im Dateinamen .js. -
Das ist der alte Inhalt der Datei userChromeJS.js:
Code
Alles anzeigen/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the userChromeJS utilities. * * The Initial Developer of the Original Code is * alta88 <alta88@gmail.com> * * Portions created by the Initial Developer are Copyright (C) 2014 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ var EXPORTED_SYMBOLS = ["userChrome"]; /* ........ Utility functions ............................................... */ var userChrome = { path: null, dirToken: null, get loadOverlayDelay () { if (!this._loadOverlayDelay) this._loadOverlayDelay = 500; return this._loadOverlayDelay; }, set loadOverlayDelay(delay) { this._loadOverlayDelay = delay; }, get loadOverlayDelayIncr() { if (!this._loadOverlayDelayIncr) this._loadOverlayDelayIncr = 1600; return this._loadOverlayDelayIncr; }, set loadOverlayDelayIncr(delay) { this._loadOverlayDelayIncr = delay; }, import: function(aPath, aRelDirToken) { let file; this.path = aPath; this.dirToken = aRelDirToken; if (aRelDirToken) { // Relative file let absDir = this.getAbsoluteFile(aRelDirToken); if (!absDir) return; let pathSep = absDir.path.match(/[\/\\]/)[0]; file = absDir.path + (aPath == "*" ? "" : pathSep + aPath.replace(/[\/\\]/g, pathSep)); } else // Absolute file file = aPath; file = this.getFile(file); if (!file) return; if (file.isFile()) { if (/\.js$/i.test(file.leafName)) this.loadScript(file, aRelDirToken, null); else if (/\.xul$/i.test(file.leafName)) { let xul_files = []; xul_files.push(file); this.loadOverlay(xul_files, this.dirToken, null, this.loadOverlayDelay); // this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr; } else this.log("File '" + this.path + "' does not have a valid .js or .xul extension.", "userChrome.import"); } else if (file.isDirectory()) this.importFolder(file); else this.log("File '" + this.path + "' is neither a file nor a directory.", "userChrome.import"); }, loadScript: function(aFile, aFolder, aRelDirToken) { setTimeout(function() { Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader) .loadSubScript(userChrome.getURLSpecFromFile(aFile), null, // defaults to the global object of the caller. userChrome.charSet); // log it userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" + (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFile.leafName) : aFile.path, "userChrome.loadScript"); }, 0); }, // XXX: Due to bug 330458, an overlay must finish before another can be // called, otherwise neither are successful. Implementing an observer to // serialize is better left as a fix in the core bug. Here, settimout values // are set to minimize but there is no quarantee; overlay cdata (if any) // needs to consider overlay completions and logging does not strictly mean // an overlay has completed, rather that the overlay file has been invoked. loadOverlay: function(aFiles, aRelDirToken, aFolder, aDelay) { //userChrome.log(aDelay+" multiple import delay", userChrome.loadOverlay); // Increment multiple import delay this.loadOverlayDelay = this.loadOverlayDelay + this.loadOverlayDelayIncr; setTimeout(function() { if (aFiles.length > 0) { //userChrome.log(userChrome.loadOverlayDelay+" inter folder delay", userChrome.loadOverlay); // log it userChrome.log(aRelDirToken ? ("[" + aRelDirToken + "]/" + (aFolder && aFolder != "*" ? aFolder + "/" : "") + aFiles[0].leafName) : aFiles[0].path, "userChrome.loadOverlay"); document.loadOverlay(userChrome.getURLSpecFromFile(aFiles.shift()), null); setTimeout(arguments.callee, userChrome.loadOverlayDelay); } }, aDelay); }, // Include all files ending in .js and .xul from passed folder importFolder: function(aFolder) { let files = aFolder.directoryEntries .QueryInterface(Components.interfaces.nsISimpleEnumerator); let xul_files = []; while (files.hasMoreElements()) { let file = files.getNext().QueryInterface(Components.interfaces.nsIFile); if (/\.js$/i.test(file.leafName) && file.leafName != "userChrome.js") this.loadScript(file, this.path, this.dirToken); else if (/\.xul$/i.test(file.leafName)) { xul_files.push(file); } } if (xul_files.length > 0) this.loadOverlay(xul_files, this.dirToken, this.path); }, getFile: function(aPath, aRelDirToken) { try { let file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsIFile); file.initWithPath(aPath); // Bad file doesn't throw on initWithPath, need to test if (file.exists()) return file; this.log("Invalid file '" + this.path + (this.dirToken ? ("' or file not found in directory with token '" + this.dirToken) : "") + "' or other access error.", "userChrome.getFile"); } catch (e) { // Bad folder throws on initWithPath this.log("Invalid folder '" + this.path + (this.dirToken ? ("' or folder not found in directory with token '" + this.dirToken) : "") + "' or other access error.", "userChrome.getFile"); } return null; }, getAbsoluteFile: function(aRelDirToken) { try { let absDir = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get(aRelDirToken, Components.interfaces.nsIFile); return absDir; } catch (e) { this.log("Invalid directory name token '" + this.dirToken + "' or directory cannot be accessed.", "userChrome.getAbsoluteFile"); return null; } }, getURLSpecFromFile: Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService) .getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler) .getURLSpecFromFile, /* Console logger */ log: function(aMsg, aCaller) { Components.classes["@mozilla.org/consoleservice;1"] .getService(Components.interfaces.nsIConsoleService) .logStringMessage(this.date + " userChromeJS " + (aCaller ? aCaller +": " : "") + aMsg); }, get dateFormat() { if (!this._dateFormat) this._dateFormat = "%Y-%m-%d %H:%M:%S"; return this._dateFormat; }, set dateFormat(format) { this._dateFormat = format; }, get date() { let date = new Date(); return date.toLocaleFormat(this.dateFormat); }, set charSet(val) { this._charSet = val; }, get charSet() { if (!this._charSet) this._charSet = "UTF-8"; // use "UTF-8". defaults to ascii if null. return this._charSet; } };
Und das der Inhalt vom Ordner userChromeJS
-
Und das der aus der neuen Datei config.js
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 das der aus der alten Datei config.js
Code
Alles anzeigen// /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the userChrome.js component. * * The Initial Developer of the Original Code is * Simon Bünzli <zeniko@gmail.com> * * Portions created by the Initial Developer are Copyright (C) 2007 * the Initial Developer. All Rights Reserved. * * Contributor(s): * alta88 <alta88@gmail.com> * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ try { /*Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); */ Components.utils.import("resource://gre/modules/osfile.jsm"); function UserChrome_js() { var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); os.addObserver(this, "final-ui-startup", false); }; UserChrome_js.prototype = { /*// Properties required for XPCOM registration: classDescription: "userChromeJS Loading Component", classID : Components.ID("{8DEB3B5E-7585-4029-B6D0-4733CE8DED50}"), contractID : "@userChromeJS;1", _xpcom_categories: [{ category: "app-startup", service: true }], */ /* ........ QueryInterface .................................................. */ /* QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsISupports, Components.interfaces.nsIObserver, Components.interfaces.nsIModule, Components.interfaces.nsIFactory, Components.interfaces.nsIDOMEventListener]), */ /* ........ nsIObserver ..................................................... */ observe: function(aSubject, aTopic, aData) { var os = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); switch (aTopic) { /* case "app-startup": case "profile-after-change": os.addObserver(this, "final-ui-startup", false); break; */ case "final-ui-startup": var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("UChrm", Components.interfaces.nsIFile); file.append("userChrome.js"); /* if (!file.exists()) { var componentFile = __LOCATION__; var componentsDir = componentFile.parent; var extensionDir = componentsDir.parent; extensionDir.append("README.txt"); if (extensionDir.exists()) extensionDir.copyTo(file.parent, "userChrome.js"); } */ if (file.exists() && file.isFile() && !Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULRuntime) .inSafeMode) { this.mFileURL = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService) .getProtocolHandler("file") .QueryInterface(Components.interfaces.nsIFileProtocolHandler) .getURLSpecFromFile(file); var path = OS.Constants.Path.libDir; path = OS.Path.join(path, "userChromeJS.js"); this.uCFileURI = OS.Path.toFileURI(path); os.addObserver(this, "domwindowopened", false); } break; case "domwindowopened": aSubject.addEventListener("load", this, true); break; } }, /* ........ nsIDOMEventListener ............................................. */ handleEvent: function(aEvent) { var document = aEvent.originalTarget; if (document.location && document.location.protocol == "chrome:") { try { let loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] .getService(Components.interfaces.mozIJSSubScriptLoader); /* loader.loadSubScript("chrome://userChromeJS/content/userChromeJS.js", document.defaultView, "UTF-8"); */ loader.loadSubScript(this.uCFileURI, document.defaultView, "UTF-8"); loader.loadSubScript(this.mFileURL, document.defaultView, "UTF-8"); } catch (ex) { // script execution can be stopped with |throw "stop";| if (ex !== "stop") { Components.utils.reportError(ex); } } } } }; /** * The following line is what XPCOM uses to create components. Each component * prototype must have a .classID which is used to create it. * * XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4). */ /*var NSGetFactory = XPCOMUtils.generateNSGetFactory([UserChrome_js]); */ new UserChrome_js(); } catch(ex) { Components.utils.reportError(ex); };
Daran siehst du schon die ganzen Unterschiede.
-
Weil ich gerade den unterschiedlichen Inhalt der beiden config.js sehe - Büssen: Hast du eventuell alte Dateien übernommen, also jetzt die alte config.js im neuen System verwendet?
-
Mensch Meier, nun reicht es aber!
Da wird jeder kleiner Schreibfehler gleich groß angekreidet?
Natürlich meinte ich den Ordner "userChromeJS" und auch die Datei "userChromeJS.js" - die natürlich bei mir im TCommander auch in dieser Schreibweise so stehen.[Blockierte Grafik: https://www2.pic-upload.de/img/34503825/FX_58_port_ProgV.jpg]
-
Was heißt hier angekreidet. Hier kommt es darauf an und wir können nicht wissen, was du meinst. Schusselfehler passieren schneller als man denkt.
-
Wenn es bei mir und allen anderen Usern OHNE diese Datei funktioniert...bei dir aber nicht...dann sollte dir das doch zu denken geben, oder siehst du das anders?
-