12

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

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

4

2 回答 2

11

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

但是,您可以使用 webview 标签模拟浏览器。请参阅浏览器示例的代码以了解如何操作。

您还可以使用刚刚发布的消息传递 API 安装与打包应用程序对话的扩展程序。请参阅消息传递示例以了解如何操作 - 只要您知道应用程序和扩展程序 ID,它就非常简单。

于 2013-01-15T17:04:45.923 回答
4

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

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

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

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

于 2015-06-04T20:02:29.027 回答