【问题标题】:Can a Chrome extension act as a web app in place of a website?Chrome 扩展程序可以代替网站充当网络应用程序吗?
【发布时间】:2017-10-29 05:23:40
【问题描述】:

我正在尝试开发一个 Chrome 扩展程序,该扩展程序应该用新的 UI 完全替换特定网站的页面。换句话说,当用户访问该网站时,扩展程序应该无缝地“拦截”它并显示新的“应用程序”(保留 URL 并且不打开新的选项卡或窗口)。我目前使用内容脚本来操作 DOM,但它太乱了。

Google Docs 等 Chrome 应用通过 URL handlers 实现了相同的目标,但由于它们现在已被弃用,因此无法选择。

目前,我知道两种选择:

  • 拦截 URL 并将其重定向到扩展 URL。 我希望保留 URL。
  • 使用内容脚本停止在document_start 加载页面(使用window.stop()),然后“注入”新应用程序。显然,这行得通,但听起来很老套,而且容易出现意外故障。

我想知道的:

  • 第二种方法是否足够好?如果使用它,我会面临哪些限制和其他问题?
  • 是否有任何其他方法至少同样好(并且最好为此目的设计)?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension


    【解决方案1】:

    您不能在选项卡中打开 chrome 应用,只能在窗口中打开。我认为他们也没有内容脚本。

    此外,Chrome 应用现在仅在您首次发布时才可在 chrome 操作系统上使用(现有的 chrome 应用适用于任何操作系统)。


    要解决您的问题,您可以使用带有内容脚本的扩展程序,然后打开一个 iframe 全屏,这样 url 就会保留在多功能框中,并且它可以在 iframe 中包含您想要的页面作为页面在应用程序中。

    内容处理程序用于打开一个特殊的协议 url 来执行诸如发送电子邮件等操作。例如 tel://、sms://、mailto: 等。 所以你不会想要这个。在批准处理协议时,它们也不是那么引人注目。

    【讨论】:

    • 谢谢。我知道应用程序的问题,并且不打算开发一个,我在问题中这么说。 (我可能误解了 Docs 应用程序的内部工作原理,但这不是重点。)我首先真正想知道的是使用 window.stop() 方法是否足够“安全”(就行为的可预测性而言) .感谢iframe 的建议,我会调查的。它比我刚才提到的方法有什么优势吗?
    • window.stop() 非常适合 Chrome。它唯一不适用的浏览器是 IE。你应该没事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多