[英]Addon attaches script just fine with jpm run, but not with the actual xpi
[英]FF Addon (JPM) Pass message from Panel's script to main index script
我正在使用JPM插件開發FireFox擴展。 我正在像這樣從主index.js文件加載面板...
var panel = require('sdk/panel');
var panel = panel.Panel({
contentURL: url('pages/popup.html'),
onHide: doHide
});
//and in another place...
panel.show({
position: button
});
pages / popup.html文件引用了一個javascript文件,我使用相對路徑來加載它。 我需要弄清楚如何將消息從面板頁面加載的此javascript文件傳遞到插件的主要index.js腳本文件。
我嘗試了postMessage以及port.emit ...
所以,要么
//index.js
panel = require("sdk/panel").Panel({
onMessage: function(message) {
console.log(message);
}
});
//popup.js - panel file
panel.postMessage('something');
...要么...
//index.js
panel.on("message", function(text) {
console.log(text);
});
//popup.js
self.port.emit('message', 'hello world');
但是,這兩個似乎都不起作用。 救命!
您應該閱讀MDN sdk / panel頁面中的“ 腳本編寫受信任的面板內容 ”部分。 最相關的文本是:
與內容腳本一樣,這些腳本可以使用
postMessage()
API或port
API與附加代碼進行通信。 關鍵的區別是這些腳本通過addon
對象訪問postMessage
和port
對象,而內容腳本通過self
對象訪問它們。
因此,您的popup.js代碼應為:
addon.port.emit('message', 'hello world');
還有你的index.js :
panel.port.on("message", function(text) {
console.log(text);
});
“ 腳本化受信任面板內容 ”部分中有一個示例附加組件,顯示了受信任面板(面板內容來自附加組件內部)和附加組件的主要背景腳本之間雙向通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.