如果文件的扩展名为JPG或PNG,如何使用chrome.downloads.onDeterminingFilename更改下载的文件名?
我在看这个例子:
chrome.downloads.onDeterminingFilename.addListener(function(item, __suggest) {
function suggest(filename, conflictAction) {
__suggest({filename: filename,
conflictAction: conflictAction,
conflict_action: conflictAction});
}
var rules = localStorage.rules;
try {
rules = JSON.parse(rules);
} catch (e) {
localStorage.rules = JSON.stringify([]);
}
for (var index = 0; index < rules.length; ++index) {
var rule = rules[index];
if (rule.enabled && matches(rule, item)) {
if (rule.action == 'overwrite') {
suggest(item.filename, 'overwrite');
} else if (rule.action == 'prompt') {
suggest(item.filename, 'prompt');
} else if (rule.action == 'js') {
eval(rule.action_js);
}
break;
}
}
});
这令人困惑。上面的chrome.downloads.onDeterminingFilename如何检测文件的名称?一旦检测到,它是如何更改文件的?任何人都可以分解这些代码的含义吗?
答案 0 :(得分:2)
一旦确定了文件名onDeterminingFilename
事件
触发一个回调函数被调用,它需要2
参数
item
对象,其中包含下载ID,url,文件名,引荐来源等数据(请参阅
https://developer.chrome.com/extensions/downloads#type-DownloadItem)__suggest
根据具体规则for
循环
迭代它们。action
中的rule
数据的每次迭代
建议函数使用特定的filename
和
conflictAction
。基本上,使用item.filename
对文件名进行了通知,并通过调用__suggest
建议使用新文件名,其中键filename
的值包含新文件名。