Chrome扩展程序中的无Chrome窗口?
Posted
技术标签:
【中文标题】Chrome扩展程序中的无Chrome窗口?【英文标题】:Chromeless window in Chrome extension? 【发布时间】:2013-08-17 20:10:07 【问题描述】:所以最近我在 Chrome 网上应用店中遇到了一个名为 Type Fu 的 Web 应用程序。让我吃惊的是他们居然创造了一个真正的无铬窗。
我正在考虑是否可以在 Chrome 扩展程序中执行此操作,因为在大多数情况下它们使用相同的 API。但是,我找不到任何可以让我做出这种效果的东西。
chrome.tabs.create
一点用处都没有。
如果我不能在扩展程序中做到这一点,那就太疯狂了,因为在我看来,扩展程序应该比 web 应用程序(基本上是网页)具有更大的“力量”。
我无法按 Ctrl + Shift + I 甚至无法右键单击它。就像我电脑上真正的原生程序一样。
一些按钮会打开另一个浮动无镶边窗口。
【问题讨论】:
你试过chrome.windows.create( type:"panel" )
吗?或者“webapp”是指这是一个托管(即未打包)的应用程序吗?
@apsillers - 不知道有没有打包。
@apsillers - 而且将type
设置为panel
也不起作用;它仍然有铬。 (我尝试了每种类型,它们都不起作用)
查看github.com/adamschwartz/chrome-chromeless
【参考方案1】:
...在大多数情况下,它们使用相同的 API
Chrome 扩展程序旨在与浏览器交互。 Chrome 打包应用程序设计为独立的,并且独立于浏览器运行。他们的 API 有now widely diverged。只要看看API listings for apps 和the equivalent listing for extensions,你就会发现它们完全不同。
在这种情况下,Fu 型使用chrome.app.window
API,尤其是create
函数的frame: 'none'
选项。
正如app.window
的名称所暗示的那样,它仅适用于包应用程序,不能用于扩展。基于扩展的chrome.windows.create
方法will eventually support a type: 'panel'
option 将提供视觉上相似的功能(在Google 的Hangouts extension 中查看它的工作原理)。它在 API 中进行了描述,并带有注释:
除非设置了“
--enable-panels
”标志,否则“panel
”和“detached_panel
”类型会创建一个弹出窗口。
目前只有环聊被列入使用面板的白名单,但Having panel behavior in chrome extension 的讨论表明,您的扩展程序可以通过在清单中添加特定的key
值来伪装成环聊:
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsDApubb73tPfYlNIFxDu3K3/EHgV6/YOJXJkld1OZ20jW/cOht1j0NggnXhQYuu1mXFUufud4I2N7b5ydyg09gcM9Va3Zk17RhNV9smbPHOd4XlzJeXifX/9MgHPu4FzCen3CiSXsOeAELJIXEuT28xICriuUko/rNPwGeIB9VwIDAQAB"
但是,我不会依赖这种无证行为; Google 可能会修复它,或者它可能会在未来破坏其他东西。
在完全支持面板之前,您可以开始使用 --enable-panel
浏览器标志开发您的扩展程序,并希望在您完成开发后默认启用该功能。
【讨论】:
所以基本上不可能创建一个无铬窗口......他们应该让我们比应用程序 IMO 更多地控制浏览器。无论如何,谢谢。以上是关于Chrome扩展程序中的无Chrome窗口?的主要内容,如果未能解决你的问题,请参考以下文章