10

我正在將Chrome瀏覽器擴展到Firefox,並使用附加SDK。要從面板或彈出窗口訪問在後臺文件中聲明的函數,我可以在Chrome中使用chrome.extension.getBackgroundPage。在Firefox中是否有一些等價物,我可以訪問在main.js或其他地方聲明的數據/函數?在Firefox擴展中的文件之間共享數據

回答

1

顯然,Jetpack不支持這個功能(儘管可以使用vanilla Firefox附加組件)。

但是有一章會幫助你,只是這不是那麼直截了當,因爲它涉及通過事件between add-on and the content scripts發送消息。

編輯:

讓我們從MDN about extensions一個例子。您可以將XUL + JavaScript視爲HTML + JavaScript。與Jetpack從你的上下文代碼(html,javascript,css in panel,widgets等)中分離(沙箱)的主要插件代碼相反,它運行在一個「用戶空間」中。

適應於之前的鏈接頁面覆蓋,並添加JavaScript代碼與XPCOM的作品,你會得到:

<?xml version="1.0"?> 
<overlay id="sample" 
     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
<script type="text/javascript"> 
    function getOS() { 
    return Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS; 
    } 
</script> 
<statusbar id="status-bar"> 
    <statusbarpanel id="my-panel" label="OS?" onclick="alert(getOS())" /> 
</statusbar> 
</overlay> 

如果讓我們說的功能是在一個外部文件你只是包括它像普通的JavaScript。

+0

嗨,香草firefox的功能使這個功能成爲可能。它是一個特定的功能還是擴展結構的差異?謝謝。 – usertest 2011-05-21 23:55:41

+0

在沒有Jetpack的情況下構建插件時,您的插件沒有後臺前景。你可以從你的面板,按鈕,工具欄,窗口等訪問任何Javascript代碼。當我說我的意思是甚至代碼從其他插件,如Firebug ... – mhitza 2011-05-22 21:57:20

+0

我沒有使用jetpack版本。你說沒有噴氣揹包是可能的,怎麼樣?謝謝。 – usertest 2011-05-26 07:31:12