在浏览器选项卡内运行 Chrome 打包应用程序

Posted

技术标签:

【中文标题】在浏览器选项卡内运行 Chrome 打包应用程序【英文标题】:Run Chrome Packaged apps inside of browser tab 【发布时间】:2012-12-27 05:10:54 【问题描述】:

我想使用为 Chrome 打包应用程序提供的新 API,但也想保留在当前浏览器环境中打开某些本地 URL 的能力,这可能吗?所有打包应用程序教程都侧重于创建单独的窗口并将应用程序用作系统中的一等公民。

也许它可以像往常一样以某种方式使用chrome.socket 和其他 API,甚至可能只在开发人员模式下使用?

【问题讨论】:

【参考方案1】:

不,这在设计上是不可能的。 Chrome 打包的应用程序与浏览器分开运行,并且无法访问特定于浏览器的功能,例如标签。最接近的方法是通过 window.open 在浏览器中打开一个外部(不在打包的应用程序中)URL。

但是,您可以通过使用 webview 标签来模拟浏览器。请参阅the code of the Browser sample 了解如何操作。

您还可以安装一个扩展程序,使用刚刚发布的消息 API 与您的打包应用程序对话。请参阅the messaging sample 了解如何操作 - 只要您知道应用程序和扩展程序 ID,这非常简单。

【讨论】:

谢谢!我认为这是不可能的,但希望有一个解决方法。 这个答案不正确。 window.open 可以从后台页面使用,以允许打包的应用程序在浏览器窗口中打开。 不,没有错。打包的应用程序内容无法在浏览器窗口中打开。正如我在回复中提到的,您可以使用 window.open 打开常规 URL,但除非您使用 web 视图,否则您无法在浏览器窗口中打开应用程序的本地内容。也许您正在考虑旧的、已弃用的打包应用程序? (那些在标签上运行,而不是在单独的窗口上) 好吧,不管这是推荐还是记录,它确实有效,并且确实被一个非常流行的应用程序使用:chrome.google.com/webstore/detail/videostream-for-google-ch/…(它们需要在浏览器选项卡中运行,以便它们可以与google cast 扩展,它没有向 chrome 平台显示 API,因此它们需要在选项卡中运行是有道理的) 链接断开!断开的链接!【参考方案2】:

编辑:Chrome 44/45+ 左右不支持/可能会中断。 3 月 3 日左右进行了一次代码审查,确实打破了 window.open 从后台页面打开,但暂时恢复了。所以预计这不会在 Chrome 50 左右开始工作吗?

实际上可以(在 Chrome 43 中)在浏览器选项卡中运行您的 chrome 平台打包应用程序。在您的后台页面中,只需调用 window.open 并提供您应用中某些内容的 URL。例如,如果index.html 在您的应用目录中,它将在浏览器选项卡中打开您的应用,网址为chrome-extension:// extension id /index.html

这应该不需要任何额外的清单权限。

请注意,如果您只是在浏览器中输入 url chrome-extension:// extension id /index.html,它将不起作用。您需要从应用的后台脚本中打开它。

【讨论】:

这仍然有效吗? chrome-extension:// asdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsd /index.html 这就是 ID 的样子,大约 30 个字符。所以这样输入?没有引号和斜线的逐字记录?

以上是关于在浏览器选项卡内运行 Chrome 打包应用程序的主要内容,如果未能解决你的问题,请参考以下文章

chrome浏览器中选项设置中有一个“关闭Google Chrome 浏览器后继续运行后台应用程序”,这个最好怎么设置?

Chrome 打包应用程序上的输入类型颜色

无法在除我之外的其他浏览器/机器上运行我的 chrome 扩展:未打包的发行版中有些不匹配?

在材质 UI 中动态更改选项卡内容

选项卡内容布局显示在其他选项卡中

选项卡内的片段