Mozilla Addon Development - Communicating Between Windows With Different Domains
I am trying to create an addon that will allow the user to query a dictionary site at will and view the definition of a chosen word. I have been struggling to find a way to communi
Solution 1:
You're mixing up regular window messaging with content script messaging. Try this:
index.js
var getDefinition = "var def = document.getElementsByClassName('def-content');" +
"definition = def[0].textContent;" +
"word = document.getElementsByClassName('js-headword');" +
"word = word.textContent;" +
"self.port.emit('dialog', definition);";
currPage = require("sdk/page-mod").PageMod({
include: "*",
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("define.js"),
],
onMessage: function(message){
console.log("received message");
},
onAttach: function(worker){
workers.push(worker);
worker.on("message", function(definition){
console.log("received message");
});
worker.port.on("dblclick", function(selected, thispage){
newPage = require("sdk/page-worker").Page({
contentURL: "http://dictionary.reference.com/browse/" + selected,
contentScriptWhen: "ready",
contentScriptFile: [
data.url("jquery.js"),
data.url("jquery-ui.min.js"),
data.url("iframe.js")
],
contentScript: getDefinition,
onMessage: function(message){
worker.postMessage(message);
}
});
});
}
});
define.js:
functioncalldictionary(definition){
console.log("here comes calldictionary");
console.log(definition);
$('div#definition').text(definition);
$('#define').dialog("open");
}
functionsend(){
var selected = getSelected();
if (selected != ""){
self.port.emit("dblclick", selected);
}
}
functiongetSelected() {
if (window.getSelection) {
returnwindow.getSelection().toString();
} elseif (document.selection) {
returndocument.selection.createRange().text;
}
return'';
}
$(window).dblclick(function() {
send();
});
self.on("message", function(message){
console.log("received message");}
});
Post a Comment for "Mozilla Addon Development - Communicating Between Windows With Different Domains"