我有一个网页,我可以找到随机数量的文件进行下载。我想开发一个小的FireFox扩展来一次下载所有文件。到目前为止,我有以下功能来下载这些文件:
function getFilesJQ () {
var $dlLinks = $('a').filter(function(index) { return $(this).text() === "Download"; });
$dlLinks.each(function () {
$(this).trigger('click');
});
}
问题是,只点击了第一个链接,并开始下载相应的文件。其他人没有被触发。
问题在哪里?这甚至可能吗?
修改
这就是$ dlLinks的样子:
{…}
0: <a id="exerciseResourcesForm:a3:0:linkDownload" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('exerciseResourcesForm'),{'exerciseResourcesForm:a3:0:linkDownload':'exerciseResourcesForm:a3:0:linkDownload'},'');}return false">
1: <a id="exerciseResourcesForm:a3:1:linkDownload" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('exerciseResourcesForm'),{'exerciseResourcesForm:a3:1:linkDownload':'exerciseResourcesForm:a3:1:linkDownload'},'');}return false">
2: <a id="exerciseResourcesForm:a3:2:linkDownload" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('exerciseResourcesForm'),{'exerciseResourcesForm:a3:2:linkDownload':'exerciseResourcesForm:a3:2:linkDownload'},'');}return false">
3: <a id="exerciseResourcesForm:a3:3:linkDownload" href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('exerciseResourcesForm'),{'exerciseResourcesForm:a3:3:linkDownload':'exerciseResourcesForm:a3:3:linkDownload'},'');}return false">
length: 4
prevObject: Object { 0: a, 1: a, 2: a, … }
__proto__: Object { jquery: "3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector", constructor: r(), length: 0, … }
jack_download.js:10:2
单击其中一个链接时,将发出POST请求:
POST
https://*******/emp/ExerciseEdit.jsf
[HTTP/1.1 200 OK 28ms]
POST
https://sb-ssl.google.com/safebrowsing/clientreport/download
[HTTP/2.0 200 OK 109ms]
答案 0 :(得分:0)
$(this).trigger('click');
这可能会打开当前页面上的链接,从而终止当前页面。您可以尝试以新的方式打开它:
window.open(this.href, "Download");
答案 1 :(得分:0)
有一点需要考虑这些链接的target
属性。如果未定义target
,则您的click
操作将打开新会话,您的后续下载将被取消。解决这个问题的一个简单方法是“强制”这些链接在新窗口中打开:
function getFilesJQ () {
var $dlLinks = $('a').filter(function(index) { return $(this).text() === "Download"; });
$dlLinks.each(function () {
window.open(this.href);
});
}
但请注意,您的浏览器可能会将其解释为多个弹出窗口,并尝试阻止它们。您可能还必须关闭弹出窗口阻止程序。