我在Firefox Addon的main.js中有兩個內容腳本: contentScript A位於'panel'模塊(模塊A)內部 contentScript B位於'page-mod'模塊內部B) 他們如何溝通或交換信息? 我試圖通過使用以下步驟來執行此操作:1.將消息從contentScript A發送到AddonScript A 2.通過在A中包含模塊B將消息從AddonScript A發送到AddonScript B. 3.將消息從AddonScript B發送到ContentScript B. 但是,它不起作用(而是間歇性地工作,可能是由於代碼中的某些錯誤)。 。 這個方法好嗎? 任何人都可以請任何更好的方法評論? 。 ThanxFirefox Addon sdk:不同內容之間的通信腳本
回答
由於SDK的安全模型,面板和頁面模塊之間的任何通信都需要通過主要附加代碼本身進行路由。下面是從一個面板中實現的形式獲取數據並把它發送通過主腳本到一個網頁-MOD的例子:
https://builder.addons.mozilla.org/addon/1035008/latest/
的代碼的關鍵部分,這是一個:
var pagemod = require("page-mod").PageMod({
include: [target],
contentScriptFile: [data.url('jquery-1.7.1.min.js'), data.url('page-mod.js')],
onAttach: function(worker) {
// console.log('attached...');
// when we get a panel-message event from the panel
panel.port.on('panel-message', function(data) {
// we emit the same message through to the page-mod
worker.port.emit('panel-message', data);
});
}
});
您會注意到,當附加了page-mod時,我將面板實例設置爲捕獲「面板消息」事件,然後直接將其發送到當前頁面模式工作器中。
這是一個很好的解釋,但是,我想要做的是:從面板發送消息到在瀏覽器中打開的網頁,以便可以根據面板中的輸入對頁面進行更改。這與你所建議的例子相反。 Plz的幫助。 – GILL 2012-01-19 18:00:55
如果我使用'onAttach',插件代碼只執行一次,其中as,我希望在頁面加載後進行連續通信。 – GILL 2012-01-19 18:32:51
後續通訊將由事件驅動。例如,每當頁面中發生的事情需要傳回到main.js時,就需要使用self.port.emit()發出一個具有適當數據的事件。在main.js中,您需要實現一個處理程序'worker.port.on(「some-event」,function(){})'來處理髮送的事件。 – canuckistani 2012-01-23 17:05:53
- 1. FF Addon SDK頁面mod腳本內容腳本通信不起作用
- 2. 如何在內容腳本和麪板之間進行通信
- 3. 爲什麼我在Firefox Addon SDK的面板內容腳本上出錯?
- 4. 火狐插件腳本之間的通信sdk - self.port不存在
- 5. Chrome擴展程序:內容腳本和background.html之間的通信
- 6. firefox addon-sdk unit-tests
- 7. Microsoft Edge中的內容腳本和後臺腳本之間的通信
- 8. 獲取網頁字段爲Javascript變量的內容[Firefox Addon-SDK]
- 9. firefox addon sdk中的XMLHttpRequest
- 10. 通過ff-addon-sdk訪問Firefox cookie
- 11. 使用Addon SDK訪問內容
- 12. 調試Firefox Addon IDE
- 13. TabHost和它之間的通信內容
- 14. 與內容腳本中通信Firefox擴展
- 15. Firefox顯示提示addon sdk
- 16. Firefox內容腳本內存消耗
- 17. Python腳本之間的通信
- 18. 通信Python腳本之間的兩個
- 19. Firefox-Addon SDK jQuery.get()方法不起作用
- 20. Chrome中的彈出窗口和內容腳本之間的通信
- 21. 在Firefox Addon頁面腳本中加載JSON文件,包中的所有內容
- 22. firefox插件中的面板內容腳本和頁面內容腳本之間的localStorage
- 23. 內容腳本和背景通信
- 24. Firefox Addon sdk - 有沒有一種方法來繞過/打破內容腳本中的Ajax請求限制
- 25. firefox插件中面板內容腳本和頁面內容腳本之間的全局變量
- 26. 腳本 - 顯示不同內容的不同時間
- 27. Firefox擴展(SDK)中的內容腳本添加了事件偵聽器
- 28. 沙盒`this`在Firefox WebExtension內容腳本
- 29. 在擴展的Chrome DevTools和內容腳本之間的溝通
- 30. CUDA不同流之間的內核間通信
是的,他們不能直接相互溝通 - 他們必須通過擴展進行溝通。 – 2012-01-16 19:03:42
你能否解釋'通過擴展進行溝通'。 Plz詳細闡述。網絡上的插件sdk支持很少。 – GILL 2012-01-17 12:22:13