gpt4 book ai didi

javascript - Firefox 26 的默认下载目录

转载 作者:行者123 更新时间:2023-11-28 08:37:48 25 4
gpt4 key购买 nike

我使用下面的代码来获取 Firefox 25 及以下版本的默认下载目录:

var defaultDownloadsDirectory = Components.classes["@mozilla.org/download-manager;1"].getService(Components.interfaces.nsIDownloadManager).defaultDownloadsDirectory;

虽然它在 Firefox 26 上运行良好,但建议不要再使用 nsIDownloadManager。 link

如何获取 Firefox 26 及更高版本的默认下载目录?

最佳答案

好吧,上面的代码暂时仍然有效......

由于我最近必须自己更新这些内容,因此这是我想出的代码。它向后兼容。

const getDefaultDownloadsDirectory = (function() {
function oldFallback(callback) {
let dlm = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager);
var dir;
try {
dir = dlm.userDownloadsDirectory;
}
catch (ex) {
dir = dlm.defaultDownloadsDirectory;
}
callback(dir.path);
}

try {
let Downloads = Cu.import("resource://gre/modules/Downloads.jsm", {}).Downloads;
if (!Downloads.getPreferredDownloadsDirectory) {
throw new Error("not supported");
}
return function newDownloads(callback) {
var p = Downloads.getPreferredDownloadsDirectory();
if (!p) {
oldFallback(callback);
return;
}
p.then(function success(r) {
callback(r);
}, function fail(e) {
oldFallback(callback);
});
};
}
catch (ex) {
return oldFallback;
}
})();

是啊,这太恶心了。没有错误处理的简短方法是:

Cu.import("resource://gre/modules/Downloads.jsm");
Downloads.getPreferredDownloadsDirectory().then(function(result) {
// do something with |result|
});

请注意,这个新 API 是异步的。没有同步变体。

关于javascript - Firefox 26 的默认下载目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com