Content.js
在回调函数中,我们将从chrome存储中获得一些链接。
function GetFilterfromStore(callback, docu) {
chrome.storage.sync.get("fiterlink", function (data) {
callback(data, docu);
});
};
function DOMtoString(data,document_root) {
debugger;
try {
alert(data.fiterlink[0].data.link);
alert(document_root);
var number = 0;
var linknumber=0;
var listoflinks = [];
var linkname = '';
var links =[data.fiterlink[0].data.link,data.fiterlink[1].data.link]
var html = '',
node = document_root.getElementsByTagName("a");
for (var i = 0; i < links.length; i++)
{
number = 0;
var temparray = [];
var heightarray=[];
var widtharray = [];
for (var j = 0; j < node.length; j++)
{
if (node[j].getAttribute("href") != null)
{
if (node[j].getAttribute("href").indexOf(links[i]) != -1)
{
linknumber++;
linkname = '';
linkname = links[i];
height = node[j].parentElement.parentElement.parentElement.parentElement.parentElement.offsetHeight;
width = node[j].parentElement.parentElement.parentElement.parentElement.parentElement.offsetWidth;
var elementdata = node[j].innerHTML;
var nodediv=node[j].getElementsByTagName("div");
var checknumber=0;
for(var k=0;k<nodediv.length;k++)
{
var clas = nodediv[k].getAttribute('class');
if(clas=="ebayextension")
{
checknumber++;
}
}
if (checknumber == 0) {
node[j].innerHTML = "<div class=\"ebayextension\" style=\"background-color: #00BFFF;color: black;\">" + elementdata + "</div><sup><b>" + linknumber + "</b></sup>";
}
heightarray[number] = { h: height };
widtharray[number] = { w: width };
temparray[number] = { linkname: node[j].getAttribute("href") };
number++;
}
}
}
listoflinks.push({
filterlink: linkname,
filteredlink: temparray,
heightarray: heightarray,
widtharray: widtharray
})
}
}
catch (ex) {
alert(ex);
}
debugger;
return listoflinks;
}
chrome.runtime.sendMessage({
action: "getSource",
source: GetFilterfromStore(DOMtoString,document),
});
Popup.js
function onPageDetailsReceived(pageDetails) {
debugger;
if (pageDetails.action == "getSource") {
var html = '';
for (var i = 0; i < pageDetails.source.length; i++)
{
//alert(pageDetails.source.length);
var counter = 1;
alert(pageDetails.source[i].filterlink);
html += "</br></br><div><b>" + pageDetails.source[i].filterlink + "</b> " + pageDetails.source[i].filteredlink.length + "</div></br></br>"
for (var j = 0; j < pageDetails.source[i].filteredlink.length; j++)
{
var campid = getParameterByName('campid', pageDetails.source[i].filteredlink[j].linkname);
var pubid = getParameterByName('pub', pageDetails.source[i].filteredlink[j].linkname);
if (pubid == null)
{
pubid = "not available";
}
html += "<b>" + counter + ").</b><a href=\""
html += pageDetails.source[i].filteredlink[j].linkname;
html += "\">" + pageDetails.source[i].filteredlink[j].linkname + "</a><br/>"
html += "\n";
html += "<b>CAMPID=" + campid + "</b>  <b>PUBID=" + pubid + "</b>";
html += "  <b>Size=" + pageDetails.source[i].heightarray[j].h + "*" + pageDetails.source[i].widtharray[j].w + "</b>";
html += "\n";
counter++;
}
}
document.getElementById('message').innerHTML = html;
}
}
我需要在popup.js中获取返回数据并在我的chrome扩展中显示它。但我无法将数据从DOMtoString(data,document_root)返回到chrome.runtime.sendMessage中的源。 请帮帮我 如果有人知道如何将数据从回调函数返回到变量,那么你也可以帮助我。