9

我为用户提供了打开单个选项卡或选项卡组的选项。当他们点击一个特殊链接时,我想打开几个相关的标签。打开几个标签的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 都作为新标签打开。有谁知道解决方法?

4

1 回答 1

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*">内容为空,它们不会显示在您的文档中,因此您的布局保持不变。

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

于 2012-11-20T12:11:00.190 回答