问题
Using the following example, I can get First paragraph from one URL i.e, ContentURL. ex - http://www.example.com
//main.js
var getFirstParagraph = "var paras = document.getElementsByTagName('p');" +
"console.log(paras[0].textContent);"
pageWorker = require("sdk/page-worker").Page({
contentScript: getFirstParagraph,
contentURL: "http://www.example.com"
});
I would like to get the first paragraph for multiple site URLs.
var urls = ["http://www.example.com", "http://www.example1.com", "http://www.example2.com"]
Is there any way to load multiple URLS to get the multiple results in an array?
I tried like following way, but it goes into infinite loop and doesn't work.
//main.js
var getFirstParagraph = "var paras = document.getElementsByTagName('p');" +
"console.log(paras[0].textContent);" +
"self.port.emit('loaded');"
pageWorker = require("sdk/page-worker").Page({
contentScript: getFirstParagraph,
contentURL: "http://www.example2.com"
});
pageWorker.port.on("loaded", function() {
var urls = ["http://www.example.com", "http://www.example1.com"];
for(var i=0; i<urls.length; i++)
{
pageWorker.contentURL = urls[i];
}
});
Any help would be much appreciated.
回答1:
Finally, I've ended up the code like this. It's working good.
var getFirstParagraph = "var paras = document.getElementsByTagName('p');" +
"console.log(paras[0].textContent);"
var urls = ["http://www.example.com", "http://www.example2.com"];
for(var i=0; i<urls.length; i++)
{
pageWorker = require("sdk/page-worker").Page({
contentScript: getFirstParagraph,
contentURL : urls[i],
});
}
I didn't find any better option than this. Hope this helps someone.
来源:https://stackoverflow.com/questions/29748993/how-to-load-multiple-urls-in-pageworker-for-firefox-add-on-sdk