2017-11-27 1 views
-1

Content.jsBenötigen

function callbacknumberoflinks(callback, document_root, obj) { 
    var obj 
    chrome.storage.local.get("fiterlink", function (filterlist, obj) { 
     alert("sync"); 
     callback(filterlist, document_root, obj); 
    }); 
    return obj; 

} 

function test(document_root) 
{ 
    var obj; 
    obj=callbacknumberoflinks(GetFilterfromStore3, document, obj) 
    alert(obj + " : test"); 
    return obj; 
} 

function GetFilterfromStore3(filterlist, document_root,obj) { 
    debugger; 
    var numberdata = 0; 
    var links = []; 
    var number = 0; 
    node = document_root.getElementsByTagName("a"); 

    for (var i = 0; i < filterlist.fiterlink.length; i++) { 
     if (filterlist.fiterlink[i].data.selected == true) { 
      links[i] = filterlist.fiterlink[i].data.link; 
     } 
    } 
    for (var i = 0; i < node.length; i++) { 
     for (var j = 0; j < links.length; j++) { 
      if (node[i].getAttribute("href") != null) { 
       if (node[i].getAttribute("href").indexOf(links[j]) != -1) { 
        number++; 
       } 
      } 
     } 
    } 
    //alert(number + " :1"); 
    obj = number; 
    return (numberdata); 
}; 

chrome.runtime.sendMessage({ 
    //number1:alert("sendmsg"), 
    action: "getnumberoflink", 
    number: test(document), 
}); 

Event.js in Chrome-Erweiterung helfen von GetFilterfromStore3 Funktion

chrome.tabs.onSelectionChanged.addListener(function (activeInfo) { 

    chrome.tabs.executeScript(null, { file: 'Getnumberoflinks.js' }); 
    // Perform the callback when a message is received from the content script 

    chrome.runtime.onMessage.addListener(function (message) { 
     if (message.action == "getnumberoflink") { 
      //alert("hello world") 
      chrome.browserAction.setBadgeBackgroundColor({ color: [255, 0, 0, 255] }); 
      alert(message.number + " : event"); 
      // alert(message.number1.toString() +"number1"); 
      chrome.browserAction.setBadgeText({ text: message.number.toString() }); 
     } 
    }); 
}); 

Ich brauche Hilfe in Chrome-Erweiterung .Event.js läuft im Hintergrund möchte ich Nummer weitergeben .Aber ich habe erste Warnung von Test-Funktion dann CallbackNumberoflinks Funktion und event.js, aber ich weiß nicht, wie man etwas von GetFilterFromStore3-Funktion zu test.Please mir helfen.

Antwort

0

Das Problem hier ist Ihr asynchroner Anruf an callbacknumberoflinks(). Bevor Sie den Wert aus dem Rückruf erhalten, wird Ihre Warnung Anweisung ausgeführt.

Ich bin nicht sicher, aber man könnte versuchen, diese -

function callbacknumberoflinks(document_root, obj,callback) { 
    /* your code */ 
    chrome.storage.local.get("fiterlink", function (filterlist, obj) { 
     /* your code */ 
     callback(filterlist, document_root, obj); 
    }); 

} 

function test(){ 
    var obj; 
    callbacknumberoflinks(document, obj, function(filterlist, document_root, obj){ 
     GetFilterfromStore3(filterlist, document_root,obj, function(numdata){ 
     obj=numdata; 
     alert(obj + " : test"); 
     /* your code */ 
     }); 
    }); 
} 

function GetFilterfromStore3(filterlist, document_root,obj,callback) { 
    /* your code */ 
    obj = number; 
    callback(numberdata); 
}; 

Dies sollte die Art und Weise sein, Daten GetFilterfromStore3()-test() zu bekommen.