0

插件代码,
创建一个,由 侦听来自内容脚本的消息Panel填充, 构建一个 JSON 字符串并尝试发送回内容脚本..confirmPanel.html
getPreferences

var confirmPanel = require("sdk/panel").Panel({
    width: 450,
    height: 350,
    contentURL: Data.get("confirmPanel.html"),
});

confirmPanel.port.on("getPreferences", function() {

    var prefs = '{'
        +'"fileName":"HelloWorld.txt", '
        +'"pathToFile":"/home/rob/", '
        +'}';

    confirmPanel.port.emit("prefs", prefs);
})

confirmPanel.html指定Panel内容..

<html>
    <head>
        <script src="confirmPanel.js"></script>
    </head>
    <body onload="Addon_Panel.getPreferences()">
    </body>
</html>

confirmPanel.jsconfirmPanel.html
等待body加载的内容脚本,然后将getPreferences消息发送到插件代码。
然后等待prefs来自插件代码的消息将 JSON 字符串记录到控制台
console.log(prefs);从未执行?

var Addon_Panel = {

    getPreferences: function() {
        addon.port.emit("getPreferences", '');
    }
};

addon.port.on("prefs", function (prefs) {
    console.log(prefs);
});
4

1 回答 1

0

将内容脚本附加为文件,而不是将其包含在 html
main.js 中

var confirmPanel = require("sdk/panel").Panel({
    width: 450,
    height: 350,
    contentURL: Data.get("html/confirmPanel.html"),
    contentScriptFile: [Data.get("js/confirmPanel.js")]
});

confirmPanel.port.emit("prefs", prefs);

在内容脚本文件..

self.port.on("prefs", function (prefs) {
    console.log("in content script");
});
于 2013-11-04T22:29:51.360 回答