【发布时间】:2018-12-25 18:19:31
【问题描述】:
我正在尝试使用 chrome.download 方法下载 CSV 文件类型并在下载时更改文件名称。
目前,我正在使用
document.querySelectorAll("[file$='foo']").forEach(a=>a.click());
模拟点击每个要下载的元素。但是,下载时的每个文件名都是 foo.csv、foo(1).csv 等。最后我想下载文件并更改文件名。目前我正在通过内容脚本执行此操作,并且从我拥有的 read 无法访问 chrome.download API,并且必须使用来自我的 background.js 的消息传递。
据我了解,与此类似的其他帖子涉及创建新的元素/内容以供下载,而不是下载网站上已有的内容。
非常感谢任何帮助!谢谢!!
我的背景.js
function changeName(prevName){
chrome.downloads.onDeterminingFilename.addListener((prevName, suggest) => {
suggest({
filename: 'new-name.csv'
});
});
};
chrome.runtime.onMessage.addListener(function(msg, sender) {
if ((msg.action === 'renameSave')
&& (msg.params !== undefined)) {
changeName(msg.params);
};
});
还有我的 contentscript.js
button.addEventListener('click', function() {
var elems = document.getElementsByClassName("Stmt");
var count = 1;
var interval = setInterval(function(){
elems[count].click();
chrome.runtime.sendMessage({
action: 'renameSave',
params: ["statement.csv"]
});
count = count + 2;
if(count > elems.length){
clearInterval(interval);
}
},800);
}, false);
【问题讨论】:
-
链接元素应该有一个
download属性,其中指定了文件名。这是你唯一可能缺少的东西,AFAIK。
标签: javascript google-chrome google-chrome-extension content-script