Das replace ersetzt das : durch ein - und das kann man immer eingeben, ohne Nachzudenken.
Es war mein Wunsch, den Doppelpunkt zu verwenden.
Das replace ersetzt das : durch ein - und das kann man immer eingeben, ohne Nachzudenken.
Es war mein Wunsch, den Doppelpunkt zu verwenden.
Lass die Doppelpunkte weg. Sei es als Sonderzeichen (kriegst du nicht eingegeben), oder in "echt", was Windows nicht akzeptiert.
milupo - Nur ist das kein Doppelpunkt, sondern ein Sonderzeichen. Ich hab versucht, es zu erklären.
milupo - Nur ist das kein Doppelpunkt, sondern ein Sonderzeichen. Ich hab versucht, es zu erklären.
Ich wollte aber ursprünglich einen Doppelpunkt und der normale Doppelpunkt funktionierte nicht, wahrscheinlich, weil Windows den nicht zulässt - wie du ja auch geschrieben hast. Aber auch das Zeichen \u2236 sieht wie ein Doppelpunkt aus und das ist für mich entscheidend - nicht der Unicode-Code.
Nehmen wir den letzten Beitrag als Beispiel. Drei Zeilen Code, RegEx, diverse positions- und längenabhängige Ersetzungen. Ergebnis:
> 23.10.2021 10:09:56
Ergebnis, wenn man einfach nur new Date().toLocaleString() (1.Zeile) verwendet:> 23.10.2021, 10:09:56
So wie ich Sören verstehe, sollte der Doppelpunkt ja mit dem unteren Code funktionieren.
Gruß
EDV-Oldie
und das ist für mich entscheidend
Und für mich die "Usability", vermutlich (!) wäre niemand in der Lage, solche Dateien ausserhalb von Windows und dann noch manuell zu öffnen geschweige aufzurufen, in der Eingabekonsole schon mal gar nicht, weshalb auch Batch jämmerlich scheitern würde. Dabei geht es mir nicht ums Ärgern bei euch, sondern lediglich der Ausblick, dass es wohl irgendwann mal scheitern wird im Ernstfall.
sollte der Doppelpunkt ja mit dem unteren Code funktionieren.
Was Firefox generiert, funktioniert nur unter Windows nicht.
Was mich persönlich am Datum stören würde, dass die natürliche Sortierung unter Windows sich an den Zahlen orientiert und da kann es auch passieren, dass plötzlich die ältesten Daten oben bzw unten stehen. Daher schreibe ich Backups immer mit JJJJ-MM-TT_HH-MM, die kann ich nach Namen oder Datum(erstellt/geändert) und das letzte steht entweder immer oben oder unten. Am Beispiel ist auch zu sehen, dass ich keinerlei Leerzeichen nutze, sondern dafür den Unterstrich. Für mich ist die Optik total Nebensache, wenn ich an meine Backups nicht mehr ankomme aus - ich nenn das mal Animositäten des einzelnen - sind die für mich wertlos. Windows hat etliche Eigenheiten, die es nicht losgeworden ist, und dazu gehört auch die Macke mit 256 Zeichen für Pfad+Datei, vor allem, wenn man Nutzerdaten aus c:\user\ in noch weiter geschaltete Unterordner sichern will. Nach 8 Ebenen ist Schluss und dann fehlt die Hälfte.
Nochmal Sonderzeichen - ich konnte es vorhin nicht in der Zeichentabelle finden, jedenfalls nicht unter Arial, nur unter Segoe UI, welches ja Standard für Windows ist. Eingabe via Nummernblock unmöglich, ohne Zeichentabelle unmöglich. Es gibt wohl Anleitungen, die sind aber konkret auf MS Programme ausgerichtet, zB Word, MS Office im allgemeinen, in Notepad++ funktioniert das nicht, auch nicht in Firefox, würde ich behaupten.
Ok, damit bin ich raus aus der Thematik, ich denke, die Absicht ist klar.
PS
In Zeile 23 des "Original-Srcipts" steht folgende Ausschlußliste:
JavaScriptvar excludes = 'bookmarkbackups *cache* crashes fftmp *healthreport* minidumps safebrowsing *webapps* saved-telemetry-pings *thumbnails* *session* *Telemetry* *hotfix* *.sqlite-shm *.sqlite-wal *.bak parent.lock blocklist.xml content-prefs.sqlite directoryLinks.json mimeTypes.rdf compatibility.ini parent.lock formhistory.sqlite';
Das sind für mich größtenteils Böhmische Dörfer
Ist da irgendwas dabei, was doch gesichert werden sollte?
Oder sind das Files, bei denen es bei laufendem FF Zugriffsprobleme beim Zippen gibt?
Für mich ist die Optik total Nebensache, wenn ich an meine Backups nicht mehr ankomme aus - ich nenn das mal Animositäten des einzelnen - sind die für mich wertlos.
Das sei dir zugestanden. Aber das ist deine persönliche Meinung, andere haben eben andere Wünsche.
Windows hat etliche Eigenheiten, die es nicht losgeworden ist, und dazu gehört auch die Macke mit 256 Zeichen für Pfad+Datei, vor allem, wenn man Nutzerdaten aus c:\user\ in noch weiter geschaltete Unterordner sichern will. Nach 8 Ebenen ist Schluss und dann fehlt die Hälfte.
Was nicht geht, geht nicht. Aber man hat seine Vorstellungen und ich möchte ausloten, was geht und inwieweit meine Wünsche umsetzbar sind. Warum sollte ich sagen, dies oder das geht sowieso nicht, ohne zu prüfen, ob es nicht doch geht?
Nochmal Sonderzeichen - ich konnte es vorhin nicht in der Zeichentabelle finden, jedenfalls nicht unter Arial, nur unter Segoe UI, welches ja Standard für Windows ist. Eingabe via Nummernblock unmöglich, ohne Zeichentabelle unmöglich.
Das ist ein Argument. Nur geht es hier nicht nur um die Eingabe per nummerische Tastatur mit Alt-Taste unter Windows. Ich habe ein Möglichkeit, das Zeichen im Skript schriftlich anzugeben. Dafür wurde Unicode erfunden. Wenn es danach geht, was Windows mit Alt+numX darstellen kann, hätte man sich die Entwicklung von Unicode sparen können und viele Sprachen wären auf der Strecke geblieben und würden das auch weiterhin tun. Und nicht nur Sprachen, sondern z. B. auch Wissenschaften, denn der Doppelpunkt, den ich verwendet habe, ist ein mathematischer Operator.
jedenfalls nicht unter Arial
Übrigens: Ich verwende mit Vorliebe DeJaVu Sans und da ist das Zeichen enthalten. Und dann gibt es da ja noch Arial Unicode MS.
Arial Unicode ist doch obsolete geworden mit Windows 7 oder 8? Und ein Sans, der wie ich heisst? Lustich
So wie ich Sören verstehe, sollte der Doppelpunkt ja mit dem unteren Code funktionieren.
Das stelle ich gerne klar: Ich hab mir nur den bereits bestehenden Code angesehen und was den Code betrifft, gibt es keine Einschränkung, wie man Datum und Uhrzeit formatiert. Dass daraus letztlich ein Dateiname wird und welche Zeichen Windows in Dateinamen erlaubt und welche nicht, hatte ich in dem Moment gar nicht auf dem Schirm. Dass es da Einschränkungen gibt und man nicht jedes Zeichen verwenden kann, stimmt allerdings.
Ich nutze nun den Code von milupo aus #53 und sage mal herzlich Danke!
Alles andere lenkt mich nur ab.
Und ein Sans, der wie ich heisst? Lustich
J'ai pensé que tu as déjà vu DejaVu.
Hallo Sören,
Das stelle ich gerne klar:
Danke für die Erklärung.
Gruß
EDV-Oldie
J'ai pensé que tu as déjà vu DejaVu.
À votre plaisir, ami.
Hallo @ all..
K.A. ob das evtl. etwas mit der Zeitumstellung zu tun hat.
So sieht der Eintrag einer Sicherung jetzt aus:
und so sah er vorher aus:
Und das hat nichts mit Nightly zu tun, ist bei der Version 93 auch so.
Kann das jemand bestätigen, bzw. gibt es wenn dann Abhilfe dafür?
Für jegliche Hilfe vielen Dank vorweg.
ja das ist bei mir auch so.
Danke dir für die Bestätigung.
Hallo, die Erscheinung habe ich nicht.
Allerdings sind bei mir im Dateinamen keine besonderen Zeichen.
Der Dateiname sieht so aus: FF-Portable-Spec_2021-11-01_11-50-14.zip
Vielleicht bin ich da oldschool, ich mag ausser nur einem Punkt vor einer Extension,
keine speziellen Zeichen, die früher auch nicht ratsam waren.
Der Code, den ich verwende, ist eine Mischung aus den o.a. Varianten.
// ==UserScript==
// @name BackupProfile.uc.js
// @namespace BackupProfile.github.com
// @description Schaltfläche zum Sichern des Firefoxprofils
// @charset UTF-8
// @author ywzhaiqi、defpt
// @version v2021.25.10
// @note Vorlage Script von ywzhaiqi (+ Mischung aus diversen spaeteren Varianten)
// @note Sicherungsdatei enthaelt auch Profilname
// @reviewURL http://bbs.kafan.cn/thread-1758785-1-1.html
(function () {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id : "Backup-button",
defaultArea : CustomizableUI.AREA_NAVBAR,
label : "Profilsicherung",
tooltiptext : "Sichern der aktuellen Konfiguration",
onClick: function(){
// Speicherort - Ordner festlegen - Sichern funktioniert nur wenn Speicherort- bzw. Ordner vorhanden ist!!
var path = "D:\\1rescue\\FF-Profiles\\Sicherung\\";
// var path = "";
// Ausschlussliste
var excludes = 'bookmarkbackups *cache* crashes fftmp *healthreport* minidumps safebrowsing *webapps* saved-telemetry-pings *thumbnails* *session* *Telemetry* *hotfix* *.sqlite-shm *.sqlite-wal *.bak parent.lock blocklist.xml directoryLinks.json compatibility.ini formhistory.sqlite';
if (!path) {
var nsIFilePicker = Ci.nsIFilePicker;
var FP = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
FP.init(window, 'Sicherungspfad wählen', nsIFilePicker.modeGetFolder);
if (FP.show() == nsIFilePicker.returnOK) {
path = FP.file.path;
} else {
return false;
}
}
excludes = excludes.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\s+/g, '|');
excludes = new RegExp(excludes, 'i');
var zw = Cc['@mozilla.org/zipwriter;1'].createInstance(Ci.nsIZipWriter);
var pr = {PR_RDONLY: 0x01, PR_WRONLY: 0x02, PR_RDWR: 0x04, PR_CREATE_FILE: 0x08, PR_APPEND: 0x10, PR_TRUNCATE: 0x20, PR_SYNC: 0x40, PR_EXCL: 0x80};
var fu = Cu.import('resource://gre/modules/FileUtils.jsm').FileUtils;
var dir = fu.getFile('ProfD', []);
// var localnow = new Date().toISOString().slice(0,19); /*localnow = new Date().toISOString().slice(0,19); or localnow = new Date().toLocaleString(); */
// localnow = localnow.replace(/T/g, "_").replace(/\W+/g, "_");
let d = new Date();
d = d.getFullYear() + '-' + (d.getMonth() + 1).toString().padStart(2, '0') + '-' + d.getDate().toString().padStart(2, '0') + '_' + d.getHours().toString().padStart(2, '0') + '-' + d.getMinutes().toString().padStart(2, '0') + '-' + d.getSeconds().toString().padStart(2, '0');
// Die folgende Zeile formt den Archivnamen
var archiveName = 'FF-Portable-Spec_' + '' + d + '.zip'; /* 'd' ersetzt 'localnow' */
var xpi = fu.File(path + '\\' + archiveName);
zw.open(xpi, pr.PR_RDWR | pr.PR_CREATE_FILE | pr.PR_TRUNCATE);
var dirArr = [dir];
for (var i=0; i<dirArr.length; i++) {
var dirEntries = dirArr[i].directoryEntries;
while (dirEntries.hasMoreElements()) {
var entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
if (entry.path == xpi.path) {
continue;
}
if (entry.isDirectory()) {
dirArr.push(entry);
}
var relPath = entry.path.replace(dirArr[0].path, '');
if (relPath.match(excludes)) {
continue;
}
var saveInZipAs = relPath.substr(1);
saveInZipAs = saveInZipAs.replace(/\\/g,'/');
// Konfigurationsdateien können gesperrt werden
try {
zw.addEntryFile(saveInZipAs, Ci.nsIZipWriter.COMPRESSION_FASTEST, entry, false);
} catch (e) {}
}
}
zw.close();
alert('Die aktuelle Konfiguration wurde als:\n'+ archiveName +'\ngesichert in:\n' + path);
function alert(aString, aTitle) {
Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService).showAlertNotification("", aTitle, aString, false, "", null);
}
function bupgetCurrentProfileName(){
function readFile(aFile){
var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); stream.init(aFile, 0x01, 0, 0);
var cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
cvstream.init(stream, "UTF-8", 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
var content = "", data = {};
while (cvstream.readString(4096, data)) {
content += data.value;
}
cvstream.close();
return content.replace(/\r\n?/g, "\n");
}
var PrefD = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("PrefD", Components.interfaces.nsIFile);
var ini = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("AppRegD", Components.interfaces.nsIFile);
ini.append("profiles.ini");
var ini = readFile(ini);
var profiles = ini.match(/Name=.+/g);
var profilesD = ini.match(/Path=.+/g);
for ( var i = 0; i < profiles.length;i++) {
if ((profilesD[i]+"$").indexOf(PrefD.leafName+"$") >= 0) {
profiles[i].match(/Name=(.+)$/);
return RegExp.$1;
}
}
return null;
}
},
});
var cssStr = '@-moz-document url("chrome://browser/content/browser.xhtml"){'
+ '#Backup-button .toolbarbutton-icon {'
+ 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABxklEQVQ4ja2UMUgbURjHfxeSFBzuBEuCkkAgIA5JDdzWohVnQe3UpRDE2UXpKKXdWro4ixlcdNJAydxiyHZkCIKIOEnLpZQSRFFz%2Bjqk73nvuDtb2j883nv%2F73u%2F%2B%2B69ewf%2FWUZgbgEFYDgiPw18B86An8DtQw%2BYdF1XRLVGoyGEEKJara4Bj0MKIhGYDxuGQVSTqtVqH0ql0uzvNzLigCQSicjmeZ7K63Q6u5VKZRoYigXGVWhZlpbbbrfrwKjfS4ZVGKVCoUCz2aTX65FOp6WdA04igf69CsqyLMrlctAWsRXGAf9EavXyFELEZT4A2TwYsLQKF%2BYXAJhb3VPep4%2BLzK3uqd7vS9Xr%2B2qsAW9u4eyoxcZSFoCVLZfTwxaA6v2xjaUsuYmnWrU60IOr%2FmD8etvl%2Fausikl%2FZcsFULEbD02hwPUdl7cvs1qiBAb9eOCdwdjEM2AABdh88wJA%2BbK%2FX6MDtVPmHyRPOfjRPfc87%2FPfgJLJ5AzwRc0BbNseB8a63e6TuKsXpnw%2BP5nJZAzgq%2BM4x3IPzwFM07woFovv%2Bv3%2BUDTiXqlU6tI0zQs%2FI%2FSe2bYt%2FyCPgJFA%2BAdwDeA4zrfg2l%2BwUqCoC1F3YQAAAABJRU5ErkJggg%3D%3D)'
+ '}}';
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
sss.loadAndRegisterSheet(ios.newURI("data:text/css;base64," + btoa(cssStr), null, null), sss.USER_SHEET);
})();
Alles anzeigen
Der Dateiname sieht so aus: FF-Portable-Spec_2021-11-01_11-50-14.zip
Danke auch dir für den Hinweis.
Bei dem kaum veränderten Standard Script ist das auch so.
Es muss an den letzten Änderungen bezüglich dem : für die Zeit liegen vermute ich mal.
Naja, ich hoffe es findet jemand eine Lösung dafür.
Ansonsten nehme ich eben auch wieder das Standard Script.
ich hoffe es findet jemand eine Lösung dafür.
Mir reicht diese Lösung dafür:
Nightly 64 2021-11-01 Zeit 12-37-49.zip
Ich habe das Script von @oldman53 für mich angepasst.
Danke dafür
// ==UserScript==
// @name BackupProfile.uc.js
// @namespace BackupProfile.github.com
// @description Schaltfläche zum Sichern des Firefoxprofils
// @charset UTF-8
// @author ywzhaiqi、defpt
// @version v2021.25.10
// @note Vorlage Script von ywzhaiqi (+ Mischung aus diversen spaeteren Varianten)
// @note Sicherungsdatei enthaelt auch Profilname
// @reviewURL http://bbs.kafan.cn/thread-1758785-1-1.html
(function () {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id : "Backup-button",
defaultArea : CustomizableUI.AREA_NAVBAR,
label : "Profilsicherung",
tooltiptext : "Sichern der aktuellen Konfiguration",
onClick: function(){
// Speicherort - Ordner festlegen - Sichern funktioniert nur wenn Speicherort- bzw. Ordner vorhanden ist!!
var path = "D:\\Nightly 64\\";
// var path = "";
// Ausschlussliste
var excludes = 'bookmarkbackups *cache* crashes fftmp *healthreport* minidumps safebrowsing *webapps* saved-telemetry-pings *thumbnails* *session* *Telemetry* *hotfix* *.sqlite-shm *.sqlite-wal *.bak parent.lock blocklist.xml directoryLinks.json compatibility.ini formhistory.sqlite';
if (!path) {
var nsIFilePicker = Ci.nsIFilePicker;
var FP = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
FP.init(window, 'Sicherungspfad wählen', nsIFilePicker.modeGetFolder);
if (FP.show() == nsIFilePicker.returnOK) {
path = FP.file.path;
} else {
return false;
}
}
excludes = excludes.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\s+/g, '|');
excludes = new RegExp(excludes, 'i');
var zw = Cc['@mozilla.org/zipwriter;1'].createInstance(Ci.nsIZipWriter);
var pr = {PR_RDONLY: 0x01, PR_WRONLY: 0x02, PR_RDWR: 0x04, PR_CREATE_FILE: 0x08, PR_APPEND: 0x10, PR_TRUNCATE: 0x20, PR_SYNC: 0x40, PR_EXCL: 0x80};
var fu = Cu.import('resource://gre/modules/FileUtils.jsm').FileUtils;
var dir = fu.getFile('ProfD', []);
// var localnow = new Date().toISOString().slice(0,19); /*localnow = new Date().toISOString().slice(0,19); or localnow = new Date().toLocaleString(); */
// localnow = localnow.replace(/T/g, "_").replace(/\W+/g, "_");
let d = new Date();
d = d.getFullYear() + '-' + (d.getMonth() + 1).toString().padStart(2, '0') + '-' + d.getDate().toString().padStart(2, '0') + ' Zeit '+ ' ' + d.getHours().toString().padStart(2, '0') + '-' + d.getMinutes().toString().padStart(2, '0') + '-' + d.getSeconds().toString().padStart(2, '0');
// Die folgende Zeile formt den Archivnamen
var archiveName = 'Nightly 64 ' + ' ' + d + '.zip'; /* 'd' ersetzt 'localnow' */
var xpi = fu.File(path + '\\' + archiveName);
zw.open(xpi, pr.PR_RDWR | pr.PR_CREATE_FILE | pr.PR_TRUNCATE);
var dirArr = [dir];
for (var i=0; i<dirArr.length; i++) {
var dirEntries = dirArr[i].directoryEntries;
while (dirEntries.hasMoreElements()) {
var entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
if (entry.path == xpi.path) {
continue;
}
if (entry.isDirectory()) {
dirArr.push(entry);
}
var relPath = entry.path.replace(dirArr[0].path, '');
if (relPath.match(excludes)) {
continue;
}
var saveInZipAs = relPath.substr(1);
saveInZipAs = saveInZipAs.replace(/\\/g,'/');
// Konfigurationsdateien können gesperrt werden
try {
zw.addEntryFile(saveInZipAs, Ci.nsIZipWriter.COMPRESSION_FASTEST, entry, false);
} catch (e) {}
}
}
zw.close();
alert('Die aktuelle Konfiguration wurde als:\n'+ archiveName +'\ngesichert in:\n' + path);
function alert(aString, aTitle) {
Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService).showAlertNotification("", aTitle, aString, false, "", null);
}
function bupgetCurrentProfileName(){
function readFile(aFile){
var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); stream.init(aFile, 0x01, 0, 0);
var cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
cvstream.init(stream, "UTF-8", 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
var content = "", data = {};
while (cvstream.readString(4096, data)) {
content += data.value;
}
cvstream.close();
return content.replace(/\r\n?/g, "\n");
}
var PrefD = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("PrefD", Components.interfaces.nsIFile);
var ini = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("AppRegD", Components.interfaces.nsIFile);
ini.append("profiles.ini");
var ini = readFile(ini);
var profiles = ini.match(/Name=.+/g);
var profilesD = ini.match(/Path=.+/g);
for ( var i = 0; i < profiles.length;i++) {
if ((profilesD[i]+"$").indexOf(PrefD.leafName+"$") >= 0) {
profiles[i].match(/Name=(.+)$/);
return RegExp.$1;
}
}
return null;
}
},
});
var cssStr = '@-moz-document url("chrome://browser/content/browser.xhtml"){'
+ '#Backup-button .toolbarbutton-icon {'
+ 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABxklEQVQ4ja2UMUgbURjHfxeSFBzuBEuCkkAgIA5JDdzWohVnQe3UpRDE2UXpKKXdWro4ixlcdNJAydxiyHZkCIKIOEnLpZQSRFFz%2Bjqk73nvuDtb2j883nv%2F73u%2F%2B%2B69ewf%2FWUZgbgEFYDgiPw18B86An8DtQw%2BYdF1XRLVGoyGEEKJara4Bj0MKIhGYDxuGQVSTqtVqH0ql0uzvNzLigCQSicjmeZ7K63Q6u5VKZRoYigXGVWhZlpbbbrfrwKjfS4ZVGKVCoUCz2aTX65FOp6WdA04igf69CsqyLMrlctAWsRXGAf9EavXyFELEZT4A2TwYsLQKF%2BYXAJhb3VPep4%2BLzK3uqd7vS9Xr%2B2qsAW9u4eyoxcZSFoCVLZfTwxaA6v2xjaUsuYmnWrU60IOr%2FmD8etvl%2Fausikl%2FZcsFULEbD02hwPUdl7cvs1qiBAb9eOCdwdjEM2AABdh88wJA%2BbK%2FX6MDtVPmHyRPOfjRPfc87%2FPfgJLJ5AzwRc0BbNseB8a63e6TuKsXpnw%2BP5nJZAzgq%2BM4x3IPzwFM07woFovv%2Bv3%2BUDTiXqlU6tI0zQs%2FI%2FSe2bYt%2FyCPgJFA%2BAdwDeA4zrfg2l%2BwUqCoC1F3YQAAAABJRU5ErkJggg%3D%3D)'
+ '}}';
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
sss.loadAndRegisterSheet(ios.newURI("data:text/css;base64," + btoa(cssStr), null, null), sss.USER_SHEET);
})();
Alles anzeigen