Chrome 为什么“window.open('','_blank',' noreferrer')”会导致“about:blank#blocked”

7d7tgy0s  于 2023-03-27  发布在  Go
关注(0)|答案(1)|浏览(4183)

我不明白为什么新窗口在这个位置打开。
另外,如果我将新窗口分配给一个变量,它的值为null:
const win = window.open('', '_blank', 'noreferrer'); // win === null
我在Chrome 111.0.0上遇到了这个问题。
为什么会发生这种情况?about:blank#blocked是什么意思,在什么情况下会出现?

efzxgjgh

efzxgjgh1#

在最新版本的浏览器中,此操作必须由用户启动,以增强安全性并防止不需要的弹出窗口(例如广告)。

在按钮上附加一个事件监听器,它会执行你的代码e。这应该可以确保预期的功能。

如果您打算在没有直接用户交互的情况下执行代码,则通过提供接受按钮来通知用户并请求确认是一种良好的做法。
用户操作后有一个特定的时间间隔,在此时间间隔内可以执行代码。此时间间隔因浏览器而异,无法控制。这里的一般建议是window.open尽可能靠近用户操作调用www.example.com()。
这个原则不仅适用于window.open(),也适用于其他场景,比如使用剪贴板。

相关问题