2010-11-29 28 views
3

我正在開發一個Firefox(FF)擴展,並在按下FF上的特定按鈕時調用一個函數。有時,FF無法從我的腳本文件中找到我的功能,即使它在那裏。相反,它會在瀏覽器擴展中搜索它並引發錯誤。Mozilla擴展命名空間:如何區分我的功能和其他軟件包的功能?

一般來說,如何在我的函數之前使用名稱空間,這將明確區別於其他包中可能具有相同名稱的函數。

對於例如爲:有什麼樣:

<script type="application/javascript" src="chrome://mythird/content/script.js"/> 
<statusbar id="status-bar"> 
    <statusbarpanel id="mythird-statusbarpanel" label="mythird" onclick="chrome://mythird/myalert();"/> 
</statusbar> 

,而不只是:

<statusbarpanel id="mythird-statusbarpanel" label="mythird" onclick="myalert();"/> 

回答

3

您可以使用正常的對象作爲你的函數命名空間。爲對象指定你的擴展名(這應該是獨一無二的),你應該非常省心。

在腳本文件:

var gYourExtensionName = {}; 

gYourExtensionName.myalert = function(){/*...*/}; 

和XUL:

<script type="application/javascript" src="chrome://mythird/content/script.js"/> 
<statusbar id="status-bar"> 
    <statusbarpanel id="mythird-statusbarpanel" 
        label="mythird" 
        onclick="gYourExtensionName.myalert()" /> 
</statusbar> 

你也應該閱讀:Firefox Extensions: Global Namespace Pollution