Javascript window.open在Chrome中不一致

时间:2012-11-18 20:09:34

标签: javascript google-chrome

我为用户提供了打开单个标签页或标签组的选项。当他们点击特殊链接时,我想打开几个相关的标签。用于打开多个选项卡的javascript如下:

<li>
  <a href="javascript:launchAll()">Or launch them all at once</a>
</li>

<script>
   function launchAll() {
     var win = window.open("http://domain.com/page1");
     win = window.open("http://domain.com/page2");
     win = window.open("http://domain.com/page3");
     win = window.open("http://domain.com/page4");
   }
</script>

前两个打开作为选项卡,后两个尝试打开弹出窗口/在单独的窗口中,在我的情况下被阻止。解锁弹出窗口不是问题,这个UI不是问题。我的问题是为什么这四个看似相同的调用会产生不同的结果。

更新:这似乎只发生在Chrome中。 Firefox和Safari将所有标签打开。有谁知道一项工作?

1 个答案:

答案 0 :(得分:6)

此限制实际上是由Chrome安全设置引起的:Chrome不希望用户只需点击一下即可打开无限制的标签。因此,他们使用的设置是,第一次单击最多两个选项卡,每次额外单击一个选项卡。所以,如果你想解决这个问题,你必须做这样的事情:

<li>
  <a href="javascript:launchAll()">Or launch them all at once</a>
  <a href="javascript:launch()" id="test"></a>
  <a href="javascript:launch2()" id="test2"></a>
</li>

<script>
   function launchAll() {
     var win = window.open("http://domain.com/page1");
     win = window.open("http://domain.com/page2");
     document.getElementById("test").click();
   }
   function launch(){
     var win = window.open("http://domain.com/page3");
     document.getElementById("test2").click();
   }
   function launch2(){
     var win = window.open("http://domain.com/page4");
   }
</script>

请注意,由于<a id="test*">内容为空,因此它们不会显示在您的文档中,因此您的布局保持不变。

另请注意,Firefox中不存在click()方法,因此您必须使用here之类的内容。