Reputation: 2057
I am trying to send a message via port from my main.js to my content script for my panel. I've tried many things without luck, however sending a message from the content script to main.js works perfectly.
Here is what my main.js looks like:
var data = require("self").data;
var setting = require("panel").Panel({
width: 250,
height: 130,
contentURL: data.url("www.google.com"),
contentScriptFile: data.url("script.js")
});
require("widget").Widget({
id: "sorter1",
label: "Search Result Sorting",
contentURL: data.url("icon.ico"),
panel: setting
});
setting.port.emit("message");
And here is my content script:
self.on("message", function(addonMessage) {
document.innerHTML = "Got Message"
});
Upvotes: 1
Views: 655
Reputation: 2057
I had this figured out a few days ago, just haven't had the time to post here.
A few things to keep in mind when using panels:
This is how I implemented it
In main.js
panel.on("show", function() {
panel.port.emit("message");
});
In panel content script
self.port.on("message", function() {
//doThings
});
port.emit() doesn't need a second argument, though second argument is what will be passed to the content script for
function(secondArg) {
}
Upvotes: 1
Reputation: 5830
[Update] Sorry, I didn't fully read the code.
First off, you actually need to send the panel a message, eg
setting.port.emit('message', someData);
For the second part: I think you want:
self.port.on("message", function(addonMessage) {
document.innerHTML = "Got Message"
});
The relevant docs are here:
Upvotes: 0