我正在使用JPM Addon開發FireFox擴展。我加載面板從主index.js文件是這樣的...FF Addon(JPM)從Panel的腳本傳遞消息到主索引腳本
var panel = require('sdk/panel');
var panel = panel.Panel({
contentURL: url('pages/popup.html'),
onHide: doHide
});
//and in another place...
panel.show({
position: button
});
的頁/ 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');
然而,這兩個唐似乎沒有用。幫幫我!
是否可以從插件腳本調用函數?實際上,我正在移植一個Chrome擴展程序,並且無法使用我需要的回調。 –
@ShahidThaika,消息傳遞是異步的(可能從一個進程到另一個進程)。 Chrome也是如此。如果你的意思是一個同步函數來從附加腳本發送*消息,那麼是的。對於上面的代碼,這將是'panel.port.emit(nameOfMessage,message);'。順便說一句:如果您正在移植Chrome擴展程序,但您尚未這樣做,則可能需要查看[WebExtensions](https://developer.mozilla.org/en-US/Add-ons/WebExtensions) API,與Chrome擴展程序非常相似。 – Makyen
我在面板中使用了一個函數來根據瀏覽器的本地化返回一個字符串。然而,在FF中,似乎你需要使用require('sdk/l10n')。get,它只能通過index.js文件訪問。我需要弄清楚如何調用本地化功能。 –