如何使用JavaScript从浏览器控制台批量下载文件?

如何使用JavaScript从浏览器控制台批量下载文件?,javascript,download,console,automation,Javascript,Download,Console,Automation,我没有网络编程的经验,所以我的问题很简单。我想通过在网页上填写表格下载很多文件。网页的扩展名是.aspx,我只对一个字段和一个按钮感兴趣。通过在浏览器中玩弄控制台,我发现执行: document.getElementById('TxtRegNo').value = 'blahblah`; 将填充相关字段。也在做一个 __doPostBack("ImageButton1","Click"); 将下载当前与blahblah对应的.pdf文件。需要输入的实际

我没有网络编程的经验,所以我的问题很简单。我想通过在网页上填写表格下载很多文件。网页的扩展名是
.aspx
,我只对一个字段和一个按钮感兴趣。通过在浏览器中玩弄控制台,我发现执行:

document.getElementById('TxtRegNo').value = 'blahblah`;
将填充相关字段。也在做一个

__doPostBack("ImageButton1","Click");
将下载当前与
blahblah
对应的
.pdf
文件。需要输入的实际值是类似PAG-1200到PAG-1900的序列。我尝试使用for循环,如下所示:

for (var i = 21618; i < 21621; i++) 
{
document.getElementById('TxtRegNo').value = 'B14-' + i;
__doPostBack("ImageButton1","Click");
}
for(变量i=21618;i<21621;i++)
{
document.getElementById('TxtRegNo')。值='B14-'+i;
__doPostBack(“图像按钮1”,“单击”);
}
但它并没有像预期的那样起作用。只有最后一个文档被下载,我在控制台中得到:

虽然在FireFox的控制台上运行时不会出现这个错误,但我仍然只能运行一个文件。有人能告诉我怎么做吗?

试试这个:

  • 通过控制台将jQuery注入页面,如下所述:
  • 在for clone表单的循环中,根据需要设置值并提交表单
    jQuery('form').clone().find('#TxtRegNo').val('blah').parent('form').submit()
  • 如果页面包含多个表单,则应指定它<代码>“表单”的工作原理与这里的css选择器类似。这将在页面上找到所有表单。如有必要,只需使用
    '#elementId'
    '.elementsClassName'
    更具体一些

    也许您还需要更改表单的名称(以便能够模拟提交表单)。我没试过,这只是猜测

    如果要将代码拆分为几行,也可以执行以下操作:

    var myFormClone = jQuery('form').clone();
    myFormClone.find('#TxtRegNo').val('blah');
    myFormClone.attr('name', 'uniquename_' + iterationVariableOfForLoop);
    myFormClone.submit();
    
    如果提交失败,请尝试:

    myFormClone.get(0).submit();
    

    祝你好运

    我尝试在
    doPostBack
    之后添加刷新,但页面在下载开始之前被刷新,它说
    未定义
    我认为这是正常的,因为这行代码没有返回任何内容。它将创建的脚本分配给变量。首先执行
    jQuery()
    控制台,就会得到未定义的结果。然后执行另一个答案的所有行并重试:)我应该按原样执行另一个答案中的所有行吗?是的!但是最后一个(
    jQuery.noConflict()
    )需要稍微延迟一点。因为jQuery需要先加载。但是jQuery的全部魔力是可用的:)如果页面不包含使用
    $
    的其他JavaScript框架,那么冲突模式是不必要的,