我遇到的帖子已经说过,“我喜欢使用扩展A,但它不适用于扩展B”。这是构建Firefox扩展时需要关注的问题吗?
延长相互冲突的常见原因有哪些?确保我的扩展程序可以很好地与所有其他扩展程序一起使用的最佳做法是什么?
答案 0 :(得分:3)
扩展冲突的最常见原因是在共享命名空间中使用通用名称。例如,如果两个扩展在browser.xul覆盖中定义了一个名为“log”的全局变量,则只有其中一个将按预期运行,因为另一个的“日志”将被覆盖。
常见的解决方案是了解哪些ID将被转储到共享空间中,并为那些具有您自己唯一前缀的ID添加前缀。
对于JavaScript代码,您可以(无论如何都是个好主意)将代码放入对象中:
var myExtension = {
onLoad: function() { ... },
...
}
而不是
function onLoad() {
}
以下是关于该主题的非常好的文章:http://blog.userstyles.org/2007/02/06/avoiding-extension-conflicts/。
其他冲突很少见,必须根据具体情况进行调试。例如,曾经有一个Mozilla中的错误导致节点上的事件侦听器在DOM周围移动时丢失。这导致菜单编辑器扩展的多个冲突,允许用户重新排列菜单项。
答案 1 :(得分:1)
不确定(资源争用是显而易见的地方),但您可能会更好地发布到mozilla.dev.extensions