谷歌浏览器扩展 - 添加模块/插件

发布于 2024-11-08 20:50:05 字数 1061 浏览 0 评论 0原文

我开始为 google chrome 开发一个扩展,我很快意识到拥有某种模块化几乎是势在必行的。

但是,我不确定最好的继续方式是什么。

理想情况下,插件应该足够容易创建和发布/共享,即使对于非专家(给定某种 API)也是如此,所以我宁愿避免让它们成为其他 chrome 扩展(带有消息传递等)。

我已经阅读了相当多的文档,但到目前为止还没有找到太多有用的信息,因此欢迎任何想法

更新

如果我没有尽可能清楚地表达自己,抱歉。 主要问题是:

  1. 共享附加代码(“插件”)而不修改/更新扩展。
  2. 允许在不公开托管的情况下使用自定义代码(无论是私有的还是存储和评估?)

虽然这两点相互矛盾,但如果不是在谷歌扩展中实现的安全模型,仍然很可能以合理的方式实现。 ..

从扩展程序(内容脚本)中调用外部代码似乎不可能通过常规方式实现,而且从网页上下文访问扩展程序也是不可能的。

新更新

最近没有足够的咖啡...我希望这足够清楚,再次道歉。

我基本上归结为 2 个选择:

  1. 在扩展程序内容脚本的上下文中运行新代码(从源代码或 url)(不知道如何)。
  2. 将新代码注入网页文档并实现消息传递 - 我研究了 HTML5 的 MessageEvent,它可以工作,但需要做很多额外的工作。

感谢您的评论,我相信我已经涵盖了大部分内容:

  • 在后台页面中使用监听器来接受脚本请求(url 是 x-origin),
  • 在清单中设置适当的权限(“tabs”、“http”) :///")
  • 使用 localStorage 进行缓存
  • 使用 chrome.tabs.executeScript 运行代码,就像扩展程序的一部分一样。

  • 允许用户添加新代码(到 localStorage 中)

  • 托管某种“plugins.json”文件(描述版本、url 等),用于发布新内容所有用户

I am starting to develop a an extension for google chrome, and i quickly realized that it will be almost imperative to have some kind of modularity.

However, i am unsure on what the best way to proceed would be.

Ideally, plugins should be easy enough to create and publish/share, even for non experts (given some sort of API), so i would rather avoid having them be other chrome extensions (with message passing, etc).

I have read a fair share of the docs and so far haven't found much helpful information, so any ideas are welcome

Updated

Sorry if i didn't make myself as clear as possible.
The main issues are:

  1. Sharing aditional code ("plugins") without modifying/updating the extension.
  2. Allowing custom code to be used without being publicly hosted (either privately or stored and evaluated?)

While both points go against each other, it would still quite possible to implement in a reasonable manner, if not for the security model implemented in google extensions...

Calling external code from within an extension (content script) doesn't seem to be possible by regular means, and neither is accessing the extension from the webpage context.

New Updated

Not enough coffee lately... i hope this is clear enough, and my apologies again.

I basically comes down to 2 choices:

  1. Run new code (from source or url) in the context of the extension's content script (no idea how).
  2. Inject new code into the webpage's document and implement message passing - i have looked into HTML5's MessageEvent and it would work, but with a lot of extra work.

Thanks for the comments, I believe i have this mostly covered:

  • use a listener in background page that takes requests for scripts (urls are x-origin)
  • set appropriate permissions in manifest ("tabs", "http:///")
  • use localStorage for caching
  • use chrome.tabs.executeScript to run code just as if part of the extension.

  • Allow users to add new code (into localStorage)

  • host some kind of 'plugins.json' file (description version, url, etc) for publishing new content for all the users

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文