簡體   English   中英

FF插件(JPM)從面板腳本傳遞消息到主索引腳本

[英]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對象訪問postMessageport對象,而內容腳本通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM