Chrome扩展程序中的Chromeless窗口?

时间:2013-08-15 15:27:59

标签: javascript google-chrome google-chrome-extension

最近我在Chrome网上应用店中遇到了名为Type Fu的Webapp。令我惊讶的是,他们实际上创造了一个真正的无铬窗户。

enter image description here

我想我是否可以在Chrome扩展程序中执行此操作,因为在大多数部分他们使用相同的API。但是,我找不到任何可以让我这样做的东西。

chrome.tabs.create根本没用。

如果我不能在延期中这样做,那将是一种疯狂,因为在我看来,一个扩展应该有更多的权力"而不是webapp(基本上是一个网页)。

我无法按Ctrl + Shift + I甚至右键单击它。它就像我计算机上的真正原生程序一样。

有些按钮会打开另一个浮动的无铬窗口。

enter image description here

1 个答案:

答案 0 :(得分:6)

  

...在大多数地方,他们使用相同的API

Chrome扩展程序旨在与浏览器进行交互。 Chrome打包应用程序设计为独立应用程序,可独立于浏览器运行。他们的API有now widely diverged。只需查看API listings for appsthe equivalent listing for extensions,您就会发现它们完全不同。

在这种情况下,类型Fu使用chrome.app.window API,尤其是frame: 'none'函数的create选项。

正如app.window的名称所示,它仅适用于应用包,而不是扩展程序。基于扩展程序的chrome.windows.create方法will eventually support a type: 'panel' option,提供视觉上类似的功能(在Google的Hangouts extension中查看)。它在API中描述了一个注释:

  

panel”和“detached_panel”类型会创建弹出窗口,除非设置了“--enable-panels”标记。

目前只有环聊被列入白名单以使用面板,但Having panel behavior in chrome extension上的讨论表明,您的扩展程序可以通过向您的清单添加特定key值来假装为环聊:

"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsDApubb73tPfYlNIFxDu3K3/EHgV6/YOJXJkld1OZ20jW/cOht1j0NggnXhQYuu1mXFUufud4I2N7b5ydyg09gcM9Va3Zk17RhNV9smbPHOd4XlzJeXifX/9MgHPu4FzCen3CiSXsOeAELJIXEuT28xICriuUko/rNPwGeIB9VwIDAQAB"

但是,我不会依赖这种无证的行为;谷歌很可能会修复它,或者它可能在将来破坏其他东西。

在完全支持面板之前,您可以使用--enable-panel浏览器标记开始开发扩展程序,并希望在完成开发后默认启用该功能。