- Firefox-Version
- v136.0a1
- Betriebssystem
- Win10
Dieses Skript saveTo.uc.js funktioniert nicht mehr in v136.0a1 Nightly. Es könnte mit jsm und mjs zu tun haben. Vielen Dank für Ihre Hilfe! (In v134.0.2 - alles Ok)
Dieses Skript saveTo.uc.js funktioniert nicht mehr in v136.0a1 Nightly. Es könnte mit jsm und mjs zu tun haben. Vielen Dank für Ihre Hilfe! (In v134.0.2 - alles Ok)
In dem verlinkten Skript kannst du Zeile 7 entfernen und ersetze Zeile 8 durch folgende Zeile:
Vielen Dank, das Skript funktioniert wieder
Das Skript hat wieder aufgehört zu funktionieren, diesmal in v139.0a1 Nightly, im Dropdown-Menü passiert nichts, wenn Sie auf die Schaltflächen klicken (v137.0.2 alles Ok, mit Änderungen aus Beitrag #2 von milupo ).
Gibt es Fehler in der Konsole?
Gibt es Fehler in der Konsole?
Ich kann die Fehlermeldung bestätigen.
Ungetestet !
Endor hat eine neuere Version im Angebot
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx135+
// ==/UserScript==
(function() {
const {FileUtils} = ChromeUtils.importESModule("resource://gre/modules/FileUtils.sys.mjs");
var css = `
hbox.dialog-button-box button.dialog-button menupopup {
background: #F0F0F0 !important;
border: 1px solid #CCCCCC !important;
padding: 2px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
background: #91C9F7 !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
padding: 3px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text{
padding: 3px !important;
padding-left: 5px !important;
padding-right: 12px !important;
}`;
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
setTimeout(function() {
saveTo()
}, 200);
function saveTo() {
// config
var dirArray = [
['C:\\Users\\xxxx\\Documents', 'Dokumente'],
['C:\\Users\\xxxx\\Pictures', 'Bilder'],
['C:\\Users\\xxxx\\Music', 'Musik'],
['C:\\Users\\xxxx\\Videos', 'Videos'],
['F:\\Video', 'Videos'],
['F:\\Adaten\\Downloads\\Firefox\\Muell', 'Verschiedenes'],
["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
//["" + FileUtils.getDir('UChrm', ['SubScript']).path + "", "SubScript"],
['E:\\', 'E:'],
['F:\\', 'F:'],
['G:\\', 'G:'],
['H:\\', 'H:'],
['I:\\', 'I:'],
['S:\\', 'S:'],
];
let button = document.getElementById("unknownContentType").getButton("cancel");
let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
saveTo.classList.toggle("dialog-button");
saveTo.label = "Save To";
saveTo.type = "menu";
dirArray.forEach(function(dir) {
var [name, dir] = [dir[1], dir[0]];
var mi = document.createXULElement("menuitem");
var item = saveToMenu.appendChild(mi);
item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
item.setAttribute("class", "menuitem-iconic");
item.addEventListener("command", function() {
var locationtext = document.getElementById('locationtext');
var file = new FileUtils.File(dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value));
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function() {};
close();
});
});
}
}());
Alles anzeigen
Ungetestet !
Ungetestet !
Da es hier ja Probleme damit gibt, hättest du das ja vorher mal machen können
Ich bin grad im TB Problemlösen unterwegs und hier nur drübergeflogen.
Vielleicht meldet sich ja Endor dazu, denn der hatte die neue Version bereitgestellt.
Hm und es gibt keine Analogie im Internet
Beim Skript von Endor (#8) kann man als Workaround die Zeile 69 anpassen und zwar so:
Dann kann man den Eintrag aber nur noch mit der Maus auswählen, 'return' funktioniert dann nicht mehr.
In der Nightly gab es Änderungen bei den Menuitems. Da sich die Namen der Attribute beim Zugriff aber nicht geändert haben (label, image...) verstehe ich nicht ganz, warum der EventListener mit "command" jetzt nicht mehr funktionieren soll . Hängt wahrscheinlich mit der Erzeugung des Menuitem zusammen. Habe ich mir jetzt nicht näher angeschaut...
Übrigens: Auch mit dem unveränderten Skript funktioniert das Speichern, wenn man ganz links vom Icon klickt!
funktioniert von Version 137 bis 139 immer noch
Fx 139.
Nach Klick passiert hier nichts:
Beim Skript von Endor (#8) kann man als Workaround die Zeile 69 anpassen und zwar so:
Bestätigt, es funktioniert, Fehler in der Konsole
Uncaught TypeError: can't access property "getButton", document.getElementById(...) is null saveTo debugger eval code:45
Der Code aus Beitrag #1 funktioniert genauso, wenn Sie die Änderungen aus Beitrag #2 (fügt Unterstützung für v136, v137, v138 hinzu) und Beitrag #13 (fügt Unterstützung für v139 hinzu) vornehmen. Fehler in der Konsole
Uncaught TypeError: can't access property "getButton", document.getElementById(...) is null saveTo debugger eval code:25
Dies gilt wahrscheinlich nicht für den Konsolenfehler und es macht keinen Sinn, es zu posten? saveTo debugger eval code:25
. Fehler in der Konsole
Uncaught TypeError: can't access property "getButton", document.getElementById(...) is null saveTo debugger eval code:25
Der Fehler wird ausgegeben, weil bei Start des Scripts der entsprechende Save-Dialog noch nicht vorhanden ist -> document.getElementById("unknownContentType")
Entweder ignorieren oder vor die Zeile
let button = document.getElementById("unknownContentType").getButton("cancel"); (Zeile 56 bei #8)
folgende Abfrage einfügen. Dann ist der Fehler weg!
Übrigens: Auch mit dem unveränderten Skript funktioniert das Speichern, wenn man ganz links vom Icon klickt!
Ja, kann ich bestätigen.
Dann ist der Fehler weg!
Das kann ich auch bestätigen. Und das Skript funktioniert hier in Fx 137 und auch im Nightly.
Dieses Skript habe ich zwecks Test genommen:
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx135+
// ==/UserScript==
(function() {
const {FileUtils} = ChromeUtils.importESModule("resource://gre/modules/FileUtils.sys.mjs");
var css = `
hbox.dialog-button-box button.dialog-button menupopup {
background: #F0F0F0 !important;
border: 1px solid #CCCCCC !important;
padding: 2px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
background: #91C9F7 !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
padding: 3px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text{
padding: 3px !important;
padding-left: 5px !important;
padding-right: 12px !important;
}`;
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css))
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
setTimeout(function() {
saveTo()
}, 200);
function saveTo() {
// config
var dirArray = [
['C:\\Users\\weiss\\Documents', 'Dokumente'],
['C:\\Users\\weiss\\Bilder'],
//["" + FileUtils.getDir('UChrm', []).path + "", "chrome"],
//["" + FileUtils.getDir('UChrm', ['SubScript']).path + "", "SubScript"],
];
if(!document.getElementById("unknownContentType"))
return;
let button = document.getElementById("unknownContentType").getButton("cancel");
let saveTo = button.parentNode.insertBefore(document.createXULElement("button"), button);
var saveToMenu = saveTo.appendChild(document.createXULElement("menupopup"));
saveTo.classList.toggle("dialog-button");
saveTo.label = "Save To";
saveTo.type = "menu";
dirArray.forEach(function(dir) {
var [name, dir] = [dir[1], dir[0]];
var mi = document.createXULElement("menuitem");
var item = saveToMenu.appendChild(mi);
item.setAttribute("label", (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute("image", "moz-icon:file:///" + dir + "\\");
item.setAttribute("class", "menuitem-iconic");
item.addEventListener("click", function() {
var locationtext = document.getElementById('locationtext');
var file = new FileUtils.File(dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value));
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function() {};
close();
});
});
}
}());
Alles anzeigen
Es gibt aber einen Unterschied zwischen den beiden Fx Versionen
In Fx 137 sieht das so aus damit:
In Fx 139 aber so:
Da ist der Text dann doppelt vorhanden.
Ich habe Zeile 40 + 41 mal unterschiedlich eingetragen, was aber keinen Einfluss auf den Text im Nightly hat.
In Fx 139 aber so:
Da ist der Text dann doppelt vorhanden.
Ach Herrje, stimmt. Ist mir überhaupt nicht aufgefallen.
(Bei deinem geposteten Skript steht immer noch command! Wahrscheinlich nur ein Kopierfehler, oder? )
Das liegt wohl daran, dass in der Nightly zusätzliche Child-Nodes im Menuitem vorhanden sind, die man vermutlich bei der Erzeugung aktiv ausblenden muss.
Habe mal bei einem Lesezeichen die Klasse menu-highlightable-text wieder eingeblendet, dann ergibt sich auch bei den Lesezeichen das gleiche Fehlerbild.
Muss ich mir später mal genauer anschauen.
Böse, was die wieder bei Mozilla "rumbasteln"...