如何使用 chrome.downloads.onDeterminingFilename如果文件的扩展名为 JPG 或 PNG,如何更改下载的文件名?
我正在看这里的例子:
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如何从上面检测文件的名称?一旦检测到,它是如何更改文件的?任何人都可以分解上面这些代码的含义吗?
最佳答案
一旦确定文件名
onDeterminingFilename
事件 在调用回调函数时触发,它需要 2 参数item
对象,包含下载 id、url、文件名、引荐来源网址等数据(请参阅 https://developer.chrome.com/extensions/downloads#type-DownloadItem )- __suggest 必须调用它以同步或异步传递建议。
- 定义了一个建议函数,用于调用
__suggest
根据具体规则 - 所有规则都从本地内存中访问并运行一个
for
循环 遍历它们。 - 对于基于
规则
中的action
数据的每次迭代 使用特定的filename
调用 suggest 函数,并且冲突操作
。
基本上,文件名是使用 item.filename
获取的,并通过调用 __suggest
建议一个新的文件名,其中键 filename
的值包含新文件名。
关于javascript - 如果文件的扩展名为 jpg 或 png,我如何使用 chrome.downloads.onDeterminingFilename 更改下载的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736325/