Chrome和IE中的循环中_blank目标表单提交问题

3

我有一个需求,需要打开多个窗口,这些窗口的大部分值相同,但有少数不同(Chrome和IE不能按照预期执行以下代码)。以下是我的一段 javascript 代码。

function test(){
   for(var i=0; i<3; i++){
      var eForm = document.forms[0];
      eForm.action = "demo_form.asp?targetNum="+i;
      eForm.target = "_blank";
      eForm.submit();
   }
}

这是我的HTML表单..
<form method="post">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <input type="button" value="Submit" onclick="test();">
</form>

这段代码在Firefox上可以完美运行,并且按预期打开3个选项卡。但是在Chrome和IE中,它只会打开一个窗口(不确定是否覆盖了相同标签页中的以前窗口)。在Chrome中,它显示带有最后一个targetNum作为2的窗口,在IE中,它显示第一个targetNum0
我的目标是实现与火狐浏览器类似的行为,也就是用相应的表单值打开多个窗口。
在寻找解决方案时,我在某个论坛帖子中发现了一篇帖子,该帖子建议在我的表单标记下添加onsubmit="this.action=this.action + '1';"。尝试了一下,但没有起作用。
附注:不能使用window.open,因为我正在从Java bean中填充值,这些值将被最后打开的窗口覆盖。

在Chrome和IE中工作,您发布的代码相同。 - vikas
请问您的 Chrome 版本是多少?我的是 31.0.1650.63m。 - manurajhada
@vikas,你的Chrome和IE浏览器是否都打开了3个标签页? - manurajhada
Chrome正在阻止多个弹出窗口。这是因为您的表单使用了target="_blank",它会打开一个新的弹出窗口,所以只能打开其中一个。在我的Chromium中,第一个弹出窗口已经打开,而Chromium向我显示了该网站已经被阻止了弹出窗口的通知。 - SirJ
1个回答

1

不确定你是否在寻找这种解决方案。我已经修改了您的脚本,如下所示。希望它能帮到您。

 var i=0;
function test(){
   var eForm = document.forms[0];
   eForm.action = "demo_form.asp?targetNum="+i;
   eForm.target = "_blank";
    if(i!=3)
    {
     setTimeout(function(){ i++; eForm.submit(); test(); },100); 
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接