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

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

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

【问题讨论】:

    标签: javascript google-chrome google-chrome-app


    【解决方案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 个字符。所以这样输入?没有引号和斜线的逐字记录?
    猜你喜欢
    • 2016-08-17
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多