Das Teil für Favoriten funktioniert leider nicht (diese Teil):
Im Moment habe ich keine Idee. Meine JavaScript-Kenntnisse sind auch nicht gerade berauschend. Funktioniert alles nicht oder wird wenigstens der Favoriten-Ordner angelegt?
Das Teil für Favoriten funktioniert leider nicht (diese Teil):
Im Moment habe ich keine Idee. Meine JavaScript-Kenntnisse sind auch nicht gerade berauschend. Funktioniert alles nicht oder wird wenigstens der Favoriten-Ordner angelegt?
Ab Zeile 61 habe ich die Höhe verändert.
Bin mir aber nicht sicher, ob sich das auch auf andere Popups auswirkt
Könnte das hier funktionieren?
Hat sich erledigt. Funktioniert doch. Der Explorer hat vielleicht nur etwas gebraucht, um die Zahl anzuzeigen.
Testen konnte ich es nicht, da der entsprechenden Pfad bei mir nicht existiert und das nur schnell über die Konsole getestet war.
Die Zip-Datei wird angelegt, ist aber leer. Müsste eventuell Zeile 52 geändert werden?
Vermutlich steht die Zahl nur versehentlich da.
Da ist JavaScript offenbar großzügiger als CSS.
Ich habe mal eine neue Version zusammengeschustert:
const Cu = Components.utils;
Cu.importGlobalProperties(['PathUtils']);
Cu.importGlobalProperties(['IOUtils']);
//**** Diesen Teil erstellt chrome Ordner in Benutzer Firefox Profile und kopiert alle dateien ****
try {
//Cu.import("resource://gre/modules/Services.jsm");
//Cu.import("resource://gre/modules/osfile.jsm");
Services.obs.addObserver(
{ observe: () =>
IOUtils.makeDirectory(PathUtils.join(PathUtils.profileDir + "\\chrome\\"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
IOUtils.copy("C:\\Users\\Lenovo M58\\Downloads\\firefox-anpassungen\\chrome\\userChrome.css", PathUtils.join(PathUtils.profileDir + "\\chrome\\userChrome.css"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
IOUtils.copy("C:\\Users\\Lenovo M58\\Downloads\\firefox-anpassungen\\chrome\\userContent.css", PathUtils.join(PathUtils.profileDir + "\\chrome\\userContent.css"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
IOUtils.copy("C:\\Users\\Lenovo M58\\Downloads\\firefox-anpassungen\\chrome\\userChrome.js", PathUtils.join(PathUtils.profileDir + "\\chrome\\userChrome.js"))
},
"profile-do-change",
false
);
/* Services.obs.addObserver(
{ observe: () =>
IOUtils.copy("C:\\Program Files (x86)\\Mozilla Firefox\\UserChromeDIR\\printpreview.uc.js", PathUtils.join(PathUtils.profileDir + "\\chrome\\printpreview.uc.js")) },
"profile-do-change",
false
);*/
// Java JNLP Start in MIME-Type
//Components.utils.import("resource://gre/modules/Services.jsm");
Services.obs.addObserver(function observer(subject, topic, data) {
var handlerSvc = Components.classes["@mozilla.org/uriloader/handler-service;1"]
.getService(Components.interfaces.nsIHandlerService);
var mimeService = Components.classes["@mozilla.org/mime;1"]
.getService(Components.interfaces.nsIMIMEService);
var realMIMEInfo = mimeService.getFromTypeAndExtension("application/x-java-jnlp-file", "");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
file.initWithPath(getenv('itw32_home')+"\\bin\\javaws.exe");
var localHandlerApp = Components.classes["@mozilla.org/uriloader/local-handler-app;1"].createInstance(Components.interfaces.nsILocalHandlerApp);
localHandlerApp.executable = file;
localHandlerApp.name = "javaws.exe";
realMIMEInfo.preferredApplicationHandler = localHandlerApp;
realMIMEInfo.preferredAction = 2; // useHelperApp
realMIMEInfo.alwaysAskBeforeHandling = false;
handlerSvc.store(realMIMEInfo);Services.obs.removeObserver(observer, topic);
}, "final-ui-startup");0
//**** Automatik Benutzer Favoriten Sicherung (als .json format) in User Home==>Documents Ordner und Datei Name ist Firefox-Favoriten.json ****
//**** Wenn Firefox beendet, wird Benutzer Firefox-Favoriten.json automatisch in Pfad C:\Users\UserName\Documents\ gespeichert ****
try {
//Cu.import("resource://gre/modules/Services.jsm");
//Cu.import("resource://gre/modules/osfile.jsm");
Chrome.importESModule("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
Chrome.importESModule("resource://gre/modules/Timer.sys.mjs");
Chrome.importESModule("resource://gre/modules/PlacesBackups.sys.mjs");
Chrome.importESModule("resource:///modules/MigrationUtils.sys.mjs");
//**** Diesen Teil erstellt in Benutzer U:\ Laufwerk, Firefox_Favoriten_BAK Ordner ****
Services.obs.addObserver(
{ observe: () =>
IOUtils.makeDirectory("U:\\Firefox_Favoriten_BAK")
}, "quit-application-requested",
false
);
const path = PathUtils.join("U:\\Firefox_Favoriten_BAK\\bookmarks.json");
let importExportBookmarks = {
modalWindow: null,
init: async function() {
Services.obs.addObserver(this, "final-ui-startup", false);
},
observe: function(aSubject, aTopic, aData) {
switch (aTopic) {
case "final-ui-startup":
BookmarkJSONUtils.importFromFile(path, {replace: false})
.then(
() => this.modalWindow.open(),
(e) =>
{
IOUtils.remove(path),
this.modalWindow.open();
let window = Services.wm.getMostRecentWindow('navigator:browser');
}
);
Services.obs.removeObserver(this, "final-ui-startup");
Services.obs.addObserver(this, "quit-application-requested", false);
break;
case "quit-application-requested":
let window = Services.wm.getMostRecentWindow('navigator:browser');
BookmarkJSONUtils.exportToFile(path, {replace: false})
.then(
() => this.modalWindow.close(),
(e) => {
this.modalWindow.close();
}
);
Services.obs.addObserver(this, "domwindowopened", false);
window.open('', 'modalWindow', 'chrome,modal');
break;
case "domwindowopened":
Services.obs.removeObserver(this, "domwindowopened");
this.modalWindow = aSubject;
};
}
};
importExportBookmarks.init();
} catch(e) {
Cu.reportError(e);
};
//**** Diesen Teil löscht in Benutzer Firefox Profile, Ordner storage\default ****
try {
//Cu.import("resource://gre/modules/Services.sys.mjs");
//Cu.import("resource://gre/modules/osfile.sys.mjs");
Chrome.importESModule("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
Chrome.importESModule("resource://gre/modules/Timer.sys.mjs");
Services.obs.addObserver(
{ observe: () =>
IOUtils.remove(PathUtils.join(PathUtils.profileDir + "\\storage\\default"))
},
"quit-application",
false
);
} catch(e) {
Cu.reportError(e);
};
Alles anzeigen
Wie Mira_Belle oben schrieb, fehlt angeblich am Ende eine schließende geschweifte Klammer als Entsprechung zu der in Zeile 5.
Zwei Dinge sind mir noch unklar:
Erstens: In Zeile 59 steht eine 0 am Ende der Zeile, aus meiner Sicht isoliert in der Prärie. Die Zeile ist davor durch ein Semikolon abgeschlossen. Sollte das nicht einen Syntax-Fehler ergeben?
Zweitens: Das Skript importiert die userChrome.js. Ja, wie bitte schön soll denn das Skript funktionieren, wenn es zu diesem Zeitpunkt noch gar keine userChrome.js gibt?
Aber ich habe keine Ahnung!
Es fehlt eine schließende geschweifte Klammer. Entweder ist eine öffnende zu viel und es wird die dazugehörige schließende Klammer erwartet oder die öffnende ist notwendig, die schließende fehlt aber.
Ich muss mir Asche aufs Haupt streuen! Oben im Code von Beitrag #14 habe ich zwar den Import-Befehl geändert, aber nicht die Dateinamen! Oh wie peinlich!
Also die Zeilen 64 - 67 müssen so aussehen:
Chrome.importESModule("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
Chrome.importESModule("resource://gre/modules/Timer.sys.mjs");
Chrome.importESModule("resource://gre/modules/PlacesBackups.sys.mjs");
Chrome.importESModule("resource:///modules/MigrationUtils.sys.mjs");
und 126/127:
Eben, ich wollte gerade schreiben, dass das eigentlich schon immer so gewesen sein muss, dass das Favicon erst angezeigt wird, wenn der Tab geladen wird.
Ich habe auch kein Problem damit. Meine Skript-Version weicht nur insofern ab, dass ich die Stilangaben in einer eigenen CSS-Datei habe.
Ach ja: Und bei mir ist das Favicon vor dem Schild-SYmbol positioniert.
Wenn damit die Lizenz bezahlt wird für einen Download, dann mag das wohl richtig sein.
Kann ich aber nichts weiter zu sagen.
Es handelt sich dabei um die Companion App. Ich glaube, man kann sie frei benutzen, sie ist halt nur nicht so komfortabel wie eine Konverter-Registrierung. Ganz sicher bin ich mir nicht, ich verwende den VDH nicht, habe ihn früher aber mal ins Sorbische übersetzt.
Ich weiß jetzt nicht genau, ob die Begleitanwendung kostenpflichtig ist, sie ist aber manchmal nötig und sie ist sicher.
2002Andreas Es gibt glaube ich kostenpflichtige Konverter für die Erweiterung.
Kürzlich gab es dazu sogar einen 15-seitigen Thread…
Den habe ich durchgesehen und bin dort wieder auf PathUtils gestoßen, dass mir zwischenzeitlich entfallen war.
PathUtils müssen importiert werden:
Danke.
Aus OS.Path.join wird PathUtils.join. Aus OS.Constants.Path.profileDir wird PathUtils.profileDir. Für OS.File.makeDir, OS.File.remove und OS.File.copy haben wir, glaube ich, noch keine Alternativen hier im Forum besprochen.
Danke. Vielleicht finde ich etwas für die restlichen drei. Die betreffen doch eigentlich keinen Pfad, sondern eine Datei, oder? Wäre da nicht FileUtils.sys.mjs anwendbar?
Ich glaube, OS. muss durch PathUtils. ersetzt werden.
So, ich habe mal eine Version zusammengeschustert:
const Cu = Components.utils;
//**** Diesen Teil erstellt chrome Ordner in Benutzer Firefox Profile und kopiert alle dateien ****
try {
//Cu.import("resource://gre/modules/Services.jsm");
//Cu.import("resource://gre/modules/osfile.sys.mjs");
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.makeDir(PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\chrome\\"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.copy("C:\\Program Files (x86)\\Mozilla Firefox\\UserChromeDIR\\userChrome.css", PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\chrome\\userChrome.css"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.copy("C:\\Program Files (x86)\\Mozilla Firefox\\UserChromeDIR\\userContent.css", PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\chrome\\userContent.css"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.copy("C:\\Program Files (x86)\\Mozilla Firefox\\UserChromeDIR\\userChrome.js", PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\chrome\\userChrome.js"))
},
"profile-do-change",
false
);
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.copy("C:\\Program Files (x86)\\Mozilla Firefox\\UserChromeDIR\\printpreview.uc.js", PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\chrome\\printpreview.uc.js")) },
"profile-do-change",
false
);
// Java JNLP Start in MIME-Type
//Components.utils.import("resource://gre/modules/Services.jsm");
Services.obs.addObserver(function observer(subject, topic, data) {
var handlerSvc = Components.classes["@mozilla.org/uriloader/handler-service;1"]
.getService(Components.interfaces.nsIHandlerService);
var mimeService = Components.classes["@mozilla.org/mime;1"]
.getService(Components.interfaces.nsIMIMEService);
var realMIMEInfo = mimeService.getFromTypeAndExtension("application/x-java-jnlp-file", "");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
file.initWithPath(getenv('itw32_home')+"\\bin\\javaws.exe");
var localHandlerApp = Components.classes["@mozilla.org/uriloader/local-handler-app;1"].createInstance(Components.interfaces.nsILocalHandlerApp);
localHandlerApp.executable = file;
localHandlerApp.name = "javaws.exe";
realMIMEInfo.preferredApplicationHandler = localHandlerApp;
realMIMEInfo.preferredAction = 2; // useHelperApp
realMIMEInfo.alwaysAskBeforeHandling = false;
handlerSvc.store(realMIMEInfo);Services.obs.removeObserver(observer, topic);
}, "final-ui-startup");0
//**** Automatik Benutzer Favoriten Sicherung (als .json format) in User Home==>Documents Ordner und Datei Name ist Firefox-Favoriten.json ****
//**** Wenn Firefox beendet, wird Benutzer Firefox-Favoriten.json automatisch in Pfad C:\Users\UserName\Documents\ gespeichert ****
try {
//Cu.import("resource://gre/modules/Services.jsm");
//Cu.import("resource://gre/modules/osfile.sys.mjs");
Chrome.importESModule("resource://gre/modules/BookmarkJSONUtils.jsm");
Chrome.importESModule("resource://gre/modules/Timer.jsm");
Chrome.importESModule("resource://gre/modules/PlacesBackups.jsm");
Chrome.importESModule("resource:///modules/MigrationUtils.jsm");
//**** Diesen Teil erstellt in Benutzer U:\ Laufwerk, Firefox_Favoriten_BAK Ordner ****
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.makeDir("U:\\Firefox_Favoriten_BAK")
}, "quit-application-requested",
false
);
const path = PathUtils.Path.join("U:\\Firefox_Favoriten_BAK\\bookmarks.json");
let importExportBookmarks = {
modalWindow: null,
init: async function() {
Services.obs.addObserver(this, "final-ui-startup", false);
},
observe: function(aSubject, aTopic, aData) {
switch (aTopic) {
case "final-ui-startup":
BookmarkJSONUtils.importFromFile(path, {replace: false})
.then(
() => this.modalWindow.open(),
(e) =>
{
PathUtils.File.remove(path),
this.modalWindow.open();
let window = Services.wm.getMostRecentWindow('navigator:browser');
}
);
Services.obs.removeObserver(this, "final-ui-startup");
Services.obs.addObserver(this, "quit-application-requested", false);
break;
case "quit-application-requested":
let window = Services.wm.getMostRecentWindow('navigator:browser');
BookmarkJSONUtils.exportToFile(path, {replace: false})
.then(
() => this.modalWindow.close(),
(e) => {
this.modalWindow.close();
}
);
Services.obs.addObserver(this, "domwindowopened", false);
window.open('', 'modalWindow', 'chrome,modal');
break;
case "domwindowopened":
Services.obs.removeObserver(this, "domwindowopened");
this.modalWindow = aSubject;
};
}
};
importExportBookmarks.init();
} catch(e) {
Cu.reportError(e);
};
//**** Diesen Teil löscht in Benutzer Firefox Profile, Ordner storage\default ****
try {
//Cu.import("resource://gre/modules/Services.jsm");
//Cu.import("resource://gre/modules/osfile.sys.mjs");
Chrome.importESModule("resource://gre/modules/BookmarkJSONUtils.jsm");
Chrome.importESModule("resource://gre/modules/Timer.jsm");
Services.obs.addObserver(
{ observe: () =>
PathUtils.File.removeDir(PathUtils.Path.join(PathUtils.Constants.Path.profileDir + "\\storage\\default"))
},
"quit-application",
false
);
} catch(e) {
Cu.reportError(e);
};
Alles anzeigen
So: Die Dateien in den Zeilen 64 - 67 und 126/127 sind konvertiert. Die Zeilen mit services.jsm und osfile.jsm können weg. Es war auch Quatsch osfile.sys.mjs statt osfile.jsm zu schreiben. Die JSM-Datei ist nicht konvertiert worden, sondern schon als solche weggefallen. Das Problem ist nun, dass dadurch auch das Objekt OS. wegfällt. Da müsste ich erst einmal suchen, wie wir das gemacht haben. Ansonsten denke ich, dass die .sys.mjs-Dateien wie folgt eingelesen werden müssten:
const { BookmarkJSONUtils } = Chrome.importESMOdule("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
const { Timer } = Chrome.importESModule("resource://gre/modules/Timer.sys.mjs");
const { PlacesBackups } = Chrome.importESModule("resource://gre/modules/PlacesBackups.sys.mjs");
const { MigrationUtils } = Chrome.importESModule("resource:///modules/MigrationUtils.sys.mjs");
Chrome.importESMOdule("resource://gre/modules/BookmarkJSONUtils.sys.mjs");
Chrome.importESModule("resource://gre/modules/Timer.sys.mjs");
Chrome.importESModule("resource://gre/modules/PlacesBackups.sys.mjs");
Chrome.importESModule("resource:///modules/MigrationUtils.sys.mjs");
Probiere das erst einmal. Sowohl 64 - 67 als auch 126 und 127 sind in einem try-Block. Da scheint das zu reichen.
Ich halte mich in Zukunft auch lieber raus, wenn es um Skripte geht
Da lernst du doch nie dazu. Schaue mal in ein Uhrwerk und wenn du dann nicht mehr wie ein Schwein hineinschaust, bist du erfolgreich gewesen.
2002Andreas Hast du denn mal die beiden omni.ja durchsucht? Einfach nach *.mjs suchen. Wie Sören schon schrieb, osfile.jsm gibt es nicht mehr und services.jsm hat keine Wirkung mehr. Beide können also weggelassen werden. Wenn gar keine JSM-Dateien mehr vorkommen, kann Zeile 1 weggelassen werden.