Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.open在Chrome控制台中工作,但不是作为代码片段_Javascript_Google Chrome Devtools - Fatal编程技术网

Javascript window.open在Chrome控制台中工作,但不是作为代码片段

Javascript window.open在Chrome控制台中工作,但不是作为代码片段,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,我对Javascript比较陌生,我正在编写一些小脚本来修改我经常使用的网页。我正在自动化的一件事是在选项卡中打开某些链接,因此我不必手动这样做 如果我将这一行放入代码段并运行它,则不会发生任何事情: window.open("http://www.google.com"); 但是,如果我在控制台中键入它并点击return,它会打开一个带有url的新选项卡。所有这些都发生在检查员身上。为什么它在一个地方工作而在另一个地方不工作?有解决办法吗?的确,窗口。打开有点误导。这是因为window是Ja

我对Javascript比较陌生,我正在编写一些小脚本来修改我经常使用的网页。我正在自动化的一件事是在选项卡中打开某些链接,因此我不必手动这样做

如果我将这一行放入代码段并运行它,则不会发生任何事情:

window.open("http://www.google.com");

但是,如果我在控制台中键入它并点击return,它会打开一个带有url的新选项卡。所有这些都发生在检查员身上。为什么它在一个地方工作而在另一个地方不工作?有解决办法吗?

的确,
窗口。打开有点误导。这是因为
window
是JavaScript中的全局上下文,
open
是该对象中的一个方法。你不应该把它理解为“打开一扇窗”。 事实上,它

将资源加载到[…]新的浏览上下文(如窗口)

()

大多数现代浏览器都是选项卡式的,因此浏览上下文是一个选项卡,然后,它们(大多数,但不总是)会打开一个新的选项卡而不是一个窗口。你能做什么?例如,类似于

window.open('http://google.de', 'google', 'width=500,height=500')

实际上为我打开了一个窗口(Chrome59)。但是,它可能会被浏览器阻止为弹出窗口。

当Chrome检测到对
window.open()
的调用时,它会将其阻止为弹出窗口

您可以通过URL栏右边缘显示的小弹出模式手动覆盖此选项:

您提到的有趣的事情是:为什么它是从控制台工作的,而不是从片段工作的?我问过DevTools团队,其中一个非正式地认为DevTools将控制台执行视为用户手势,以避免此类安全检查

一个对您来说足够好的解决方法是从新的Chrome选项卡(
chrome://newtab
)。当我从该页面运行代码段时,我可以打开新窗口,而不会触发“弹出阻止”模式


感谢您在控制台和代码片段之间进行试验。这很有趣。

我在地址栏中看到一个关于被阻止的弹出窗口的通知。A好的,这是默认行为,但是你可以在浏览器选项中更改它。你可以参考这篇文章的解释。谢谢你帮我调查这件事。事实证明,正如您和wOxxOm所建议的,“允许”相关站点的弹出窗口可以解决问题。一旦弹出窗口被解锁,代码片段就可以像我需要的那样打开一个选项卡。