跨浏览器扩展开发和外部网站:最佳实践

时间:2014-02-24 17:48:14

标签: google-chrome-extension cross-browser firefox-addon browser-extension

我们目前正在开发Chrome浏览器扩展程序,可将我们的内容和控件插入特定的外部网站,以便用户通过Chrome的“内容脚本”沙箱进行互动。我们的工作非常好。但是,我们有两个问题:

  1. 毋庸置疑,我们在这些外部网站中严重依赖HTML结构和DOM ID,我们会插入自己的控件和内容。因此,有时网站会改变一些小问题,我们能够快速做出反应。问题是:我们有多脆弱?外部网站与我们一样,对这些DOM ID和HTML结构具有相同的JS依赖关系。我们认为,除非进行全面的网站改革,否则他们将不愿意改变现状。想法?

  2. 随着我们继续扩充Chrome浏览器扩展程序,我们会尽量避免本机Chrome API调用。但是,随着我们从内容脚本开发转向Chrome的“背景”,我们发现我们很有可能采用本机Chrome API调用 - 尤其是在后台和内容脚本之间发送消息时。我们现在正在抽象Chrome调用,并计划用Firefox API替换它们。除了这个标准做法,关注很快转向Firefox,有没有办法减轻或消除修改从Chrome到Firefox的扩展的影响?换句话说,除了常规的软件开发最佳实践外,是否还有针对开发跨浏览器扩展的最佳实践?

  3. 非常感谢思想和链接。

1 个答案:

答案 0 :(得分:0)

  1. 当您在网站中过于紧密地集成时,您的扩展程序(或网站)可能会因冲突(与其他扩展程序)而中断。尽量减少对网页特定结构的依赖关系数量,并尽可能提供回退 跟踪相关元素并检查它们是否仍然存在于文档中(使用(自动)(集成)测试)。
  2. 在单独的模块中抽象出特定于平台的详细信息,并使所有方法异步。在异步方法中使用同步(扩展)API很容易,但不是相反 有些API确实是特定于平台的。不要为这些API编写抽象,而是开发特定于平台的模块,以提供您想要的功能。
  3. 如果您想了解有关测试浏览器扩展程序的2c的更多信息,请参阅Testing browser extensions