【问题标题】:setTimeout() isn't working to open new urlsetTimeout() 无法打开新网址
【发布时间】:2021-08-06 19:42:41
【问题描述】:

我正在尝试以不同的时间打开新的 URL,但它不起作用

<script type="text/javascript">
setTimeout(function() {window.location="http://google.com";}, 2000);
setTimeout(function() {window.location="http://youtube.com";}, 5000);
</script>

这个脚本只能打开第一个链接。 有什么想法吗?

【问题讨论】:

  • 当您导航到第一个链接时,您会丢失初始页面中的所有脚本。所以监听器/超时/间隔被丢弃了。
  • 使用window.open_blank 作为第二个参数setTimeout(function () { window.open("http://google.com", '_blank'); }, 2000);

标签: javascript redirect window


【解决方案1】:

当执行第一行时,您将被重定向到http://google.com。此时您的页面已更改,您为 youtube.com 编写的脚本不会出现在此页面上,因为这是一个新页面。

【讨论】:

    【解决方案2】:

    window.location 将设置您正在执行此脚本的浏览器窗口的路径。在这种情况下,您将导航到 http://google.com,然后您的第二次超时将永远不会执行。

    为了解决此问题,您可以尝试使用 window.open_blank 参数在不同的选项卡或窗口中打开 URL。

    <script type="text/javascript">
    setTimeout(function() {window.open("http://google.com", "_blank")}, 2000);
    setTimeout(function() {window.open("http://youtube.com", "_blank")}, 5000);
    </script>
    
    

    【讨论】:

      【解决方案3】:

      您可以(生成)在新标签页中打开链接。

      注意:标签不会在这个嵌入的 sn-p 中打开,因为沙盒不允许弹出窗口。

      // Adapted from: https://stackoverflow.com/a/57216987/1762224
      const openTab = (href, target = '_blank') => {
        const link = Object.assign(document.createElement('a'), { href, target });
        document.body.append(link);
        link.click();
        link.remove();
        console.log(`Opening: ${href}`);
      }
      
      setTimeout(() => openTab('http://google.com'), 2000);
      setTimeout(() => openTab('http://youtube.com'), 5000);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-05
        • 2014-11-26
        • 1970-01-01
        • 2019-12-02
        • 2017-04-25
        • 1970-01-01
        • 2019-08-11
        • 2022-07-29
        相关资源
        最近更新 更多