- Firefox-Version
- v143.0beta9
- Betriebssystem
- Win10
v143 Skript OpenFolders.uc.js funktioniert nicht mehr. In v140 funktionierte es nur, wenn security.browser_xhtml_csp.enabled = false.
Wir bitten Fachleute, beide Probleme zu beheben.
JavaScript
// OpenFolders.uc.js
// Button with drop-down menu for opening some folders
// null - separator
(async data => CustomizableUI.createWidget({
id: "OpenFolders",
label: "Open Folders",
tooltiptext: "Open Some Folders",
localized: false,
onCreated(btn) {
var doc = btn.ownerDocument;
var n = nn => doc.createXULElement(nn);
btn.type = "menu";
btn.setAttribute("image", this.image);
var popup = n("menupopup"), dummy = n("menuitem");
popup.toggleAttribute("context");
dummy.n = n;
dummy.render = this.render;
popup.append(dummy);
btn.prepend(popup);
// var tt = btn.appendChild(n("box")).appendChild(n("tooltip"));
// tt.setAttribute("onpopupshowing", "return !(this.btn.open = true);");
// btn.setAttribute("tooltip", tt.id = (tt.btn = btn).id + "-tooltip");
},
render() {
var {n, parentNode: popup} = this;
this.remove();
for(var o of data) {
if (!o) {
popup.append(n("menuseparator"));
continue;
}
var {lab, file, img} = o;
var menuitem = n("menuitem");
menuitem.setAttribute("label", lab || file.leafName);
menuitem.className = "menuitem-iconic";
menuitem.setAttribute("image", img || "moz-icon://file:///" + file.path);
menuitem.tooltipText = file.path;
menuitem.file = file;
popup.append(menuitem);
}
popup.setAttribute(
"oncommand",
'var {file} = event.target; file.exists() ? file.reveal() : Services.prompt.alert(null, "Not found!", file.path);'
);
},
get image() {
var sym = Symbol.iterator;
data[sym] = () => {
delete data[sym];
var it = data[sym](), {next} = it;
var f = Components.Constructor("@mozilla.org/file/local;1", "nsIFile", "initWithPath");
it.next = () => {
var res = next.call(it), obj = res.value;
if (obj) {
var {file} = obj;
//if (typeof file == "function") obj.file = obj.file(f);
if (typeof file == "string") {
var ind = file.indexOf("\\"), has = ind > 0;
var root = has ? file.slice(0, ind) : file;
if (root.length > 2)
file = Services.dirsvc.get(root, Ci.nsIFile).path
+ (has ? file.slice(ind) : "");
obj.file = f(file);
}
}
return res;
}
return it;
}
delete this.image;
return this.image = "chrome://global/skin/icons/folder.svg";
}
}))([
// Set your own paths here
lab: "Drive D:",
file: "D:\\",
img: "chrome://browser/skin/preferences/saveFile.png"
},{
lab: "Downloads",
file: "D:\\DOWNLOADS",
},{
file: "D:\\Portable Files",
},
null, { // separator
lab: "Core",
file: "GreD",
img: "chrome://branding/content/icon16.png"
},{
file: "D:\\Portable Files\\Firefox Portable\\Profiles",
},{
file: "D:\\Portable Files\\Firefox Portable\\Profiles\\Chrome",
}]);
Alles anzeigen