小编And*_*ris的帖子

为什么 window.open 在 setTimeout <= 1000ms 时不会被阻止?

document.querySelector('#ontime').onclick = function() {
    setTimeout(() => {
        window.open('https://www.google.com');
    }, 1000);
};
Run Code Online (Sandbox Code Playgroud)

当用户点击超时 <= 1000ms(或 a Promise.resolve().then(...))后使用 window.open 时,它不会被浏览器阻止。

如果您使用超时> 1000ms 或 执行相同操作requestAnimationFrame,则弹出窗口将被阻止。

单击下面的链接可以获取包含 4 个案例的完整示例: https: //jsfiddle.net/kouty79/rcwgbfxy/

有人知道为什么吗?有相关文档或 w3c 规范吗?

javascript settimeout window.open requestanimationframe

5
推荐指数
1
解决办法
866
查看次数