Ich habe ein paar Skripte, in denen noch der Code ChromeUtils.import('resource://devtools/shared/loader/Loader.jsm', {}) oder auch ('resource://gre/modules/FileUtils.jsm') steht, also im Fx 126 nicht mehr funktionieren dürften. Tun sie aber. Ist dieser Code vielleicht überflüssig geworden?
Edit: In diesem Beispiel funktioniert das Skript nur mit diesem Code. Gibt es doch noch .jsm Dateien?
Beispiel für FileUtils.jsm (Zeile 8):
JavaScript: saveTo.uc.js
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx104+
// ==/UserScript==
(function () {
const Cu = Components.utils;
if (!window.FileUtils) Cu.import('resource://gre/modules/FileUtils.jsm');
setTimeout(function () {
saveTo();
}, 200);
function saveTo() {
// Config
const dirArray = [
['F:\\Users\\bege\\Desktop', 'Desktop'],
['F:\\Downloads', 'Downloads'],
['F:\\Eigene Dateien\\Eigene Bilder\\Symbole', 'Symbole'],
['F:\\Users\\bege\\AppData\\Roaming\\Mozilla\\Firefox\\icons', 'Firefox\\Icons'],
['F:\\Setups\\Audio-Video', 'Setups\\Audio-Video'],
['F:\\Setups\\Dateiverwaltung', 'Setups\\Dateiverwaltung'],
['F:\\Setups\\Dateiverwaltung\\FreeCommander', 'Setups_FreeCommander'],
['F:\\Setups\\Editoren', 'Setups\\Editoren'],
['F:\\Setups\\Editoren\\Notepad++', 'Setups\\Notepad++'],
['F:\\Setups\\Grafik', 'Setups\\Grafik'],
['F:\\Setups\\Internet', 'Setups\\Internet'],
['F:\\Setups\\Sicherheit\\KeePass', 'Setups\\Sicherheit\\KeePass'],
['F:\\Setups\\Tools', 'Setups\\Tools'],
['F:\\Setups\\Tools\\W10', 'Setups\\Tools\\W10'],
['F:\\Setups\\Wartung', 'Setups\\Wartung'],
['F:\\Setups\\Wartung\\System u. Hardware', 'Setups\\Wartung\\System, Hardw.'],
['F:\\Eigene Dateien\\Eigene Bilder\\aktuelleDownloads', 'Bilder'],
['F:\\Eigene Dateien\\Eigene Musik\\aktuelleDownloads', 'Musik'],
['F:\\Eigene Dateien\\Eigene Videos\\aktuelleDownloads', 'Videos'],
[FileUtils.getDir('UChrm', []).path, 'chrome'],
[FileUtils.getDir('UChrm', ['CSS']).path, 'CSS'],
[FileUtils.getDir('UChrm', ['JS']).path, 'JS'],
/* ['C:\\', 'C:'],
['E:\\', 'E:'],
['F:\\', 'F:'],
['S:\\', 'S:']
*/ ];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern in…';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
// color: white !important;
background: #eeeeee !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic {
padding-left: 8px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic:hover {
background: red !important;
// color: white !important;
}
//hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-iconic-left {
// transform: scale(.5) !important;
//max-height: 20px !important;
//}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
padding-right: 8px !important;
padding-left: 8px !important;
color: black !important;
}
//hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic hbox.menu-accel-container {
//max-height: 18px !important;
//}
`;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const 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 () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function () {};
close();
});
});
}
}());
Alles anzeigen