Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.open在Chrome中不一致_Javascript_Google Chrome - Fatal编程技术网

Javascript window.open在Chrome中不一致

Javascript window.open在Chrome中不一致,javascript,google-chrome,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://

我为用户提供了打开单个选项卡或选项卡组的选项。当他们点击一个特殊的链接,我想打开几个相关的标签。打开多个选项卡的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>
  • 函数launchAll(){ var win=窗口打开(“http://domain.com/page1"); win=窗口。打开(“http://domain.com/page2"); win=窗口。打开(“http://domain.com/page3"); win=窗口。打开(“http://domain.com/page4"); }
    前两个作为选项卡打开,后两个尝试在单独的窗口中作为弹出窗口/打开,在我的例子中,这些窗口被阻止。取消阻止弹出窗口不是问题,此UI也不是问题所在。我的问题是,为什么这四个看似相同的调用会产生不同的结果


    更新:这似乎只发生在Chrome上。Firefox和Safari都以新标签打开。有人知道解决方法吗?

    这个限制实际上是由于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>
    
  • 函数launchAll(){ var win=窗口打开(“http://domain.com/page1"); win=窗口。打开(“http://domain.com/page2"); document.getElementById(“测试”)。单击(); } 函数启动(){ var win=窗口打开(“http://domain.com/page3"); document.getElementById(“test2”)。单击(); } 函数launch2(){ var win=窗口打开(“http://domain.com/page4"); }

    请注意,由于

    这是一个很好的问题,对我来说,前三个链接正常打开,第三个在弹出窗口中打开。我只是尝试在打开其他链接之前添加延迟,但它不起作用。。。为了检测是否有不想要的东西,我想Chrome会记住用户不久前是否点击过。在你的例子中,答案是否定的,因此它们被阻止了。试着把空白作为目标。我几乎可以肯定它不会工作,但谁知道呢:)另外,尝试将它们存储在不同的变量中。这可能很有用:这并不能回答问题,但您不需要将window.open(…)指定给变量。请随意取出代码的“win=”部分,除非您打算在创建后与打开的窗口交互。谢谢。这是一种笨拙的内部网用户界面。我正在打开几个外部站点的页面进行比较,无法使用iFrame。我想让用户省去点击一堆链接的麻烦,但是所有的链接都是可用的,所以他们可以在Chrome中随时点击。呃,这已经不再适用于最新版本的Chrome,可能是25或26。