2009-01-13 118 views
4

我遇到的帖子,“我很乐意使用扩展A,但它不与扩展区B的工作”。这是我在构建Firefox扩展时需要关注的事情吗?已经指出Firefox扩展兼容性

有哪些常见原因扩展到互相冲突?确保我的扩展与所有其他扩展配合良好的最佳实践是什么?

回答

3

的扩展冲突的最常见原因是共享命名空间使用共同的名字。例如,如果两个扩展名在browser.xul覆盖图中定义了一个名为“log”的全局变量,则只有其中一个将按预期运行,因为另一个的“log”将被覆盖。

常见的解决办法是学习,你的标识将被倒入一个共享空间和前缀那些具有自己独特的前缀。

对于JavaScript代码,你可以(这是一个好主意,反正)把你的代码放到一个对象:

var myExtension = { 
    onLoad: function() { ... }, 
    ... 
} 

,而不是

function onLoad() { 
} 

这里是关于一个很好的写了话题:http://blog.userstyles.org/2007/02/06/avoiding-extension-conflicts/

其他冲突是罕见的,有根据具体情况逐案进行调试。例如,Mozilla曾经存在一个错误,当节点在DOM周围移动时,会导致节点上的事件侦听器丢失。这导致菜单编辑器扩展的多重冲突,允许用户重新排列菜单项。

1

不知道(资源竞争是看明显的地方),但你可能有更好的运气张贴到mozilla.dev.extensions