【问题标题】:Why is only the first window.open working?为什么只有第一个 window.open 工作?
【发布时间】:2014-04-02 01:22:41
【问题描述】:

我调用了两个 window.open,但似乎只有第一个在工作。那里发生了什么?

<button id="open-two">Open two windows</button>

var openTwo = document.getElementById("open-two");
openTwo.addEventListener("click", function() {
    window.open("http://bing.com");
    window.open("http://google.com");
});

小提琴here

我在测试时使用的是 Chrome。

【问题讨论】:

    标签: javascript window.open


    【解决方案1】:

    这是内置的弹出窗口拦截器。 Chrome(正确地)认为你打开了很多窗口,所以它试图阻止你。您可以通过在原始窗口的地址栏右侧查找带有红色X 的小图标来确认这一点。

    您将需要用户禁用弹出窗口阻止程序或找到其他方法来执行此操作。

    【讨论】:

    • 谢谢 Ed,是的,这似乎是问题所在。 ;-) -- 使用 setTimeout 进行测试。
    • 我的理解是 Chrome 会跟踪您尝试打开的窗口总数,因此 setTimeout 无济于事。解决这个问题的唯一可靠方法是让每个新窗口打开以响应不同的用户操作(即,每个要打开的窗口一个操作)。您可能会发现 this question and its answers 很有帮助。
    • 是的,这是我的理解。该页面很有帮助,谢谢。接受的答案中的建议非常好。
    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 2017-07-16
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多