Google chrome devtools 为什么每个Chrome应用程序窗口都会打开一个新的开发者工具窗口?

Google chrome devtools 为什么每个Chrome应用程序窗口都会打开一个新的开发者工具窗口?,google-chrome-devtools,google-chrome-app,Google Chrome Devtools,Google Chrome App,从这个问题开始:然后回答,这就是为什么当你开发一个通过“加载解包扩展”加载的应用程序,并使用chrome.app.window.create()打开一个新窗口时然后右键单击新窗口“Inspect Element”,您会看到一个新的开发人员工具窗口,而不是chrome应用程序原始窗口中已经打开的窗口?还是一只虫子 我这样问是因为当我实际使用开发工具(带有工作区)作为编写Chrome应用程序的实际IDE时,在不同的开发工具窗口之间切换非常耗时(我没有使用任何其他外部文本编辑器或IDE)这是Chrom

从这个问题开始:然后回答,这就是为什么当你开发一个通过“加载解包扩展”加载的应用程序,并使用
chrome.app.window.create()打开一个新窗口时
然后右键单击新窗口“Inspect Element”,您会看到一个新的开发人员工具窗口,而不是chrome应用程序原始窗口中已经打开的窗口?还是一只虫子


我这样问是因为当我实际使用开发工具(带有工作区)作为编写Chrome应用程序的实际IDE时,在不同的开发工具窗口之间切换非常耗时(我没有使用任何其他外部文本编辑器或IDE)

这是Chrome中开发工具的一个限制。建议的内容会很酷,但需要一些我们尚未完成的工作

需要明确的是,不同的窗口并不共享相同的JS“全局上下文”。引用之所以存在,是因为“全球环境”是一种东西,它有着真正的意义

假设有两个窗口A和B,它们生活在同一个JS世界中。如果两个窗口都可以访问宇宙中的所有对象(如果它们可以获得引用的话)。将有两个窗口对象,windowA和windowB

“全局上下文”是指在其中查找窗口对象非范围标识符

在windowA的“全局上下文”中运行代码时,将在windowA的上下文中查找未作用域的标识符。例如,将在windowA.foo上查找“foo”。如果foo实际上在windowB上,则找不到它。换句话说,如果您在windowA的“全局上下文”中运行代码时创建了一个全局变量,那么它实际上会放在windowA上。如果随后在window B的全局上下文中运行代码,则需要有对windowA的引用才能访问它


我希望这是有道理的;这有点难以解释。我可能也弄错了一些更好的观点。

我不太明白你的问题。一个开发工具窗口只能附加到一个选项卡,如果打开一个选项卡,则不会切换到新选项卡。是的,我理解,但对于chrome应用程序,我链接到的问题表明,chrome应用程序的所有窗口都共享相同的JS全局上下文,因此我认为它们可以共享一个开发工具实例?感谢@Ben的解释,当您指出每个窗口的全局上下文实际上是不同的,即使它们可以通过diff访问时,@Ben也是非常有意义的我得到的逻辑是,(应用程序)后台页面与扩展后台页面一样,都有自己的开发窗口,每个chrome.app.window都是用一些HTML页面创建的,就像选项卡中的内容脚本一样,这些应用程序窗口需要(并且拥有)自己的环境和开发窗口。唯一棘手/有问题的是,当我的应用程序窗口启动时,我看不到它的dev窗口按钮/链接。只有当我打开应用程序bg页面开发窗口时,按钮才会被创建。。。uhmmm凌乱地解释一下:)在应用程序之外,Chrome比Firefox更快,尽管它的GUI(大多缺乏图形用户界面,并且没有真正的定制)由于页面加载速度快而浪费了节省的时间,而Firefox(如果你真的因为他们不断添加的垃圾而狡猾的话)则可以)特别可定制,但你失去了时间,因为它是如此陷入记忆明智。如果有一个单独的开发工具窗口,可以切换到tab/app/etc所关注的任何选项卡,或者将窗口视为层,这将非常有用。请在我发财之前做这件事,然后自己去做。:-)