Thursday, 5 April 2018

javascript - Firefox Extension: self.port.on not passing result to outer function

main.js



var tURL;
var self = require("sdk/self");
var tabs = require("sdk/tabs");
var data = self.data;


/*
contentScriptFile: [data.url("scripts/lib/jquery.js"),
data.url("scripts/lib/jquery-ui.js"),
data.url("scripts/platform.js")];
*/
// First time install
if (require('sdk/self').loadReason == 'install') {
// Do something on the very first install
tabs.open("http://www.example.com/test2.php");

}

require("sdk/tabs").on("ready", logURL);
function logURL(tab) {
tURL = tab.url;
console.log("LOGURL: "+tURL);

var worker = tabs.activeTab.attach({
contentScriptFile: [data.url("scripts/lib/jquery.js"),
data.url("scripts/platform.js"),

data.url("scripts/script.js")]
});
worker.port.emit("vsAPI", tURL);


worker.port.on('getURL', function(callback) {
var gotURL = data.url(callback);
worker.port.emit("gotURL", gotURL);
});


}


platform.js



function Platform() {
var that = this;

that.getURL = function (filename) {


self.port.emit('getURL', filename);

self.port.on("gotURL", function(callback) {
console.log("gotURL: "+callback);
var output = callback;
});
//console.log("output: "+output);
return output;

}

}


Problem:



platform.js emits to main.js



main.js receives, processes and passes back result to platform.js



platform.js receives result successfully.




However, I want to use the result outside of the port.on function...



I.E:



self.port.on("gotURL", function(callback) {
console.log("gotURL: "+callback);
var output = callback;
});



I want to use "var output" outside of self.port.on("gotURL")



Any ideas what I need to tweak please?



Thanks!

No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...