【问题标题】:Open 10 tabs on one click一键打开10个标签
【发布时间】:2021-08-21 06:52:32
【问题描述】:

我是 Javascript 新手。我尝试使用相同的链接打开 10 个新选项卡,但是当我运行代码并单击按钮时,它只会打开一个带有此 URL 的选项卡。请告诉我如何在js中做到这一点。

代码如下:

<button 
  onclick="virus()" 
  type="button" 
  name="button"
>Start your Magic!</button>

<script>
  function virus() {
    for(var i = 0; i < 10; i++) {
      window.open("https://www.w3schools.com/js/js_jquery_selectors.asp");
    }
  }
</script> 

【问题讨论】:

  • 最好将函数包裹在 for 循环中。所以会触发病毒功能10次。未测试

标签: javascript


【解决方案1】:

此 stackoverflow 线程中对此进行了广泛讨论:Open multiple links in Chrome at once as new tabs

总而言之,现代浏览器似乎不允许这样做。

【讨论】:

  • 你不认为它应该是评论而不是答案吗?
【解决方案2】:

首先确保您允许来自 chrome 的“弹出窗口和重定向”,如所附图片。

第二次尝试将代码包装在超时中,例如:

    for (var i = 0; i < 10; i++) {
        setTimeout(() => {
           window.open("https://www.w3schools.com/js/js_jquery_selectors.asp"  );
        }, 200);
    }

【讨论】:

    【解决方案3】:

    window.open() 接受第二个参数作为 windowName。因此,如果没有具有特定名称的浏览上下文,则会创建一个新的浏览上下文。

    因此,由于您没有传递第二个参数,所以在第一个参数之后的所有其他 window.open 调用都不会创建新的浏览上下文,也不会打开新的窗口/选项卡。

    因此,您可以尝试使用以下代码进行修复 -

    <button onclick="virus()" type="button" name="button"> Start your Magic!</button>
       <script>
           function virus(){
             for(var i=0;i<10;i++){
            window.open("https://www.w3schools.com/js/js_jquery_selectors.asp", i.toString());
             }
           }
    

    我还向 window.open() 传递了第二个参数,这将有助于在每次调用该方法时创建一个新的浏览上下文。

    【讨论】:

    • 但它不工作你有什么其他想法。
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2017-09-30
    • 2012-06-04
    相关资源
    最近更新 更多