2012-01-13 2 views
1

Je sais que ça a été ici comme des milliers de fois, mais je suis coincé maintenant. J'ai lu beaucoup de réponses et j'ai étudié le code.google.com mais je n'ai pas réussi. J'essaye d'envoyer une demande dans une extension de chrome de background.html à contentscript.js. J'ai réussi à le faire fonctionner dans l'autre sens.Coincé au message passant background.html >> contentcript.js (extension chrome)

code à l'intérieur background.html:

chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
     console.log(response.farewell); 
    }); 
    }); 

code à l'intérieur contentscript.js:

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") 
     sendResponse({farewell: "goodbye"}); 
    else 
     sendResponse({farewell: "nope"}); 
}); 

Le manifest.json devrait être bien que la communication fonctionne en arrière et tout le reste fonctionne correctement. Je vous remercie!

+0

Le message reçu dans contentscript? –

+0

Non, même si j'ajoute 'alert (" Hey ");' à l'intérieur de la 'fonction (request, sender, sendResponse) {}' rien ne se passe. –

Répondre

0

Votre code est bon, il doit y avoir quelque chose de mal avec votre déclencheur. J'ai créé une extension simple en utilisant votre code et cela a fonctionné. Ajoutez ces deux bits à votre arrière-plan et au sommaire. Puis rmb sur n'importe quelle page et choisissez «Envoyer un message». Vous devriez recevoir une alerte.

background.html

var menuid = chrome.contextMenus.create({"title":"Send Message", "onclick": SendMessage, "documentUrlPatterns":["http://*/*"]}); 

function SendMessage() {   
    chrome.tabs.getSelected(null, function(tab) { 
      chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
       console.log(response.farewell); 
      }); 
    }); 
} 

contentscript

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") { 
      alert('hello'); 
     sendResponse({farewell: "goodbye"}); 
     } 
    else 
     { 
      alert('goodbye'); 
     sendResponse({farewell: "nope"}); 
     } 
}); 
+0

Merci, cela fonctionne. Mais je ne sais toujours pas pourquoi l'autre ne le fait pas. J'ai utilisé l'événement onclicked du navigateur d'action qui fonctionne bien aussi. –

Questions connexes