2009-01-13 116 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