我正在將Chrome瀏覽器擴展到Firefox,並使用附加SDK。要從面板或彈出窗口訪問在後臺文件中聲明的函數,我可以在Chrome中使用chrome.extension.getBackgroundPage
。在Firefox中是否有一些等價物,我可以訪問在main.js
或其他地方聲明的數據/函數?在Firefox擴展中的文件之間共享數據
10
A
回答
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。
相關問題
- 1. Firefox擴展:共享狀態
- 2. 在JSP文件之間共享數據?
- 3. 在Javascript文件之間共享數據
- 4. Kotlin在Float和Double之間共享擴展函數的實現
- 5. Angular2在組件之間共享數據
- 6. 在Angularjs組件之間共享數據
- 7. 共享數據JVM之間
- 8. 共享分享類和數據庫共享擴展
- 9. 如何在擴展和容器應用程序之間共享SQLite數據庫
- 10. 如何在2個或更多Visual Studio擴展之間共享數據?
- 11. 共享UserDefaults擴展
- 12. 從共享擴展
- 13. Chrome擴展:在content.js和popup.js之間共享常量變量
- 14. 在es6模塊之間共享數據
- 15. 在Android用戶之間共享數據
- 16. C++ - 在線程之間共享數據
- 17. 在specflow場景之間共享數據
- 18. 在master和reduce之間共享數據
- 19. 在兩個類之間共享數據
- 20. 如何在iPhone之間共享數據?
- 21. 在類對象之間共享數據
- 22. 在phonegap和inappbrowser之間共享數據
- 23. Silverlight - 在頁面之間共享數據
- 24. 在XIB之間共享數據
- 25. ios在用戶之間共享數據
- 26. 在appengine模塊之間共享數據
- 27. 在UIWebView和UIViewController之間共享數據
- 28. 在窗體c之間共享數據#
- 29. 在視圖之間共享數據
- 30. 在數據庫之間共享LotusScript庫
嗨,香草firefox的功能使這個功能成爲可能。它是一個特定的功能還是擴展結構的差異?謝謝。 – usertest 2011-05-21 23:55:41
在沒有Jetpack的情況下構建插件時,您的插件沒有後臺前景。你可以從你的面板,按鈕,工具欄,窗口等訪問任何Javascript代碼。當我說我的意思是甚至代碼從其他插件,如Firebug ... – mhitza 2011-05-22 21:57:20
我沒有使用jetpack版本。你說沒有噴氣揹包是可能的,怎麼樣?謝謝。 – usertest 2011-05-26 07:31:12