Javascript window.open在Chrome中不一致

pfe*_*rel 9 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>
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*lex 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>
Run Code Online (Sandbox Code Playgroud)

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

另请注意,该click()方法在Firefox中不存在,因此您必须使用此处的内容.