插件代码,
创建Panel
,填充confirmPanel.html
从内容脚本中收听getPreferences
消息,
构建一个JSON字符串并尝试发送回内容脚本..
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.js
是confirmPanel.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);
});
答案 0 :(得分: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");
});