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窗口?的主要内容,如果未能解决你的问题,请参考以下文章

使用扩展弹出窗口中的按钮更改 DOM 的 Chrome 扩展

mailto 链接在 chrome 扩展弹出窗口中不起作用

我该怎么办? (Chrome 扩展)

如何使Chrome扩展程序窗口始终位于顶部

如何链接到 chrome 扩展中的选项页面?

如何展开我的 Chrome 扩展程序的弹出窗口