我是 Javascript 的新手,我正在编写一些小脚本来修改我经常使用的网页。我正在自动化的事情之一是在选项卡中打开某些链接,因此我不必手动操作。
如果我将这一行放入我的代码片段并运行它,什么也不会发生:
window.open("http://www.google.com");
但是,如果我将它输入控制台并按回车键,它会打开一个带有 url 的新选项卡。所有这一切都发生在 Inspector 中。为什么它在一个地方起作用而在另一个地方不起作用?有解决方法吗?
最佳答案
当 Chrome 检测到并非源自用户手势的 window.open()
调用时,它会将其作为弹出窗口进行阻止。
您可以通过显示在 URL 栏右边缘的小弹出窗口手动覆盖它:
您提出的有趣的事情是:为什么它在控制台中起作用,而不是在代码段中起作用?我询问了 DevTools 团队,其中一位非正式地认为 DevTools 将控制台执行视为用户手势,以避免此类安全检查。
可能适合您的一种解决方法是从新的 Chrome 标签页 (chrome://newtab
) 运行您的代码段。当我从该页面运行代码段时,我可以打开新窗口而不会触发“弹出窗口被阻止”模式。
感谢您试验它如何与控制台和代码段一起工作。结果证明这很有趣。
关于Javascript window.open 在 Chrome 控制台中工作,但不是一个片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45331065/