【问题标题】:How to do multiple submits on webpage using javascript?如何使用javascript在网页上进行多次提交?
【发布时间】:2013-10-17 22:19:30
【问题描述】:

我的网页上有很多提交按钮。我试过这个:

javascript:var x=document.getElementsByTagName("input");
for(var i=0;i<x.length;i++) {
   if (x[i].type == 'submit') {
      x[i].click();
   }
};

它开始提交,但提交速度非常快。或者很多次,我的网页冻结。我想在每次提交之间暂停或休眠。我也在堆栈溢出中搜索并阅读了很多线程。 JavaScript 没有暂停或睡眠。有一些替代方案,例如 Timeout,但许多人建议不要使用它。我知道尝试在中间暂停或睡觉不是一个好主意。

所以,我现在没有想法了。我将如何一一进行这些多次提交?谁能给我正确的方向?提前致谢。

【问题讨论】:

  • 向它添加返回类型或返回 false 或返回 true 从我的角度来看这将帮助你显然不是一个好主意
  • 为什么要一次点击页面上的所有提交按钮?通常这不是必需的。
  • 为什么需要多次提交?您不能将页面上的所有输入序列化并一次发送吗?
  • @MikeW : 我要一个一个提交。

标签: javascript browser automation submit sleep


【解决方案1】:

除非你非常幸运,否则这不会起作用。每次提交都会导致页面重新加载。如果您再次提交太快,第一页加载将被中止,这可能意味着任何相关的处理要么被放弃,要么仅部分完成。您需要等待每次提交完成后再发送下一次,或者将所有数据分块发送。

添加任意延迟,例如 50 毫秒,有时可能就足够了,但在其他情况下,它会不必要地长,或者不够长。

或者,您可以使用 AJAX 发送数据,等待每个响应。这会更可靠,但由于每次提交都需要往返加上处理时间,因此提交的总时间可能会从 100 毫秒增加到 1.5 到 2 秒。

与单次提交相比,所有数据都可以在第一次提交中发送 - 100 毫秒。

【讨论】:

    【解决方案2】:

    尝试稍稍延迟,50 毫秒左右

     javascript:var x=document.getElementsByTagName("input");
     for(var i=0;i<x.length;i++) {
        if (x[i].type == 'submit') {
           setTimeout(function() {
              x[i].click();
           }, 50);
        }
     };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多