我正在尝试构建一个从链接下载大量项目的chrome扩展程序,主要逻辑位于我的download.js
文件中,我希望能够指定哪个下载子文件夹I&#39 ; d喜欢将它们捆绑在一起,但输入字段的值似乎是空的。这是我目前的代码
popup.html
<!doctype html>
<html>
<head>
<title>Download CVs</title>
<script src="popup.js"></script>
</head>
<body>
<form id="folderForm">
Subdir of downloads:
<input type="text" id="folder">
<input type="submit" id="download" value="Download CVs">
</form>
</body>
</html>
popup.js
function bundleItems() {
chrome.tabs.executeScript({
file: 'download.js'
});
}
document.addEventListener('DOMContentLoaded', function() {
var downloadButton = document.getElementById('download');
downloadButton.addEventListener('click', bundleItems);
});
chrome.extension.onRequest.addListener(function(logs) {
var folder = document.getElementById('folder').value;
logs.map(function(log) {
chrome.downloads.download({
url: log.attachment.link,
filename: folder + '/' + log.attachment.filename
});
});
});
我从download.js
向popup.js
发送信息,如果我尝试在下载中下载它,一切正常,所以我觉得发布我的download.js
文件将毫无用处。但是,如果我尝试显示folder
变量,那么它就是空的。我在同一个问题上搜索了很多其他帖子,但似乎没有一个解决方案适合我。
答案 0 :(得分:1)
您无法提交到Chrome扩展程序页面。在这种情况下,没有Web服务器来处理您的POST请求。这样做只需重新加载文档(从表单中清除值)。
您需要阻止提交,方法是为您的按钮指定type="button"
。
答案 1 :(得分:0)
我会在提交按钮上添加preventDefault()。
https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault