Extension chrome pour envoyer un message du script contextuel au script de contenu

Je développe une extension dans laquelle je dois extraire des données de la page de profil linkedin lorsque l'utilisateur appuie sur le bouton sur popup. Je passe le message de la page popup.js au contenu et, en réponse, je vais obtenir des données extraites de la page de profil linkedin par contentscript afin que je puisse l'afficher dans popup.html. Mais je reçois une erreur lorsque j'ai inspecté le popup.html. L'erreur est la suivante:

Port: Could not establish connection. Receiving end does not exist. lastError:29 Error in event handler for 'undefined': Cannot read property 'farewell' of undefined TypeError: Cannot read property 'farewell' of undefined at chrome-extension://kdfgoafjicddfffdbfofdmckejemfije/popup.js:6:25 at <error: illegal access> at Event.dispatchToListener (event_bindings:356:21) at Event.dispatch_ (event_bindings:342:27) at Event.dispatch (event_bindings:362:17) at Object.chromeHidden.Port.dispatchOnDisconnect (miscellaneous_bindings:258:27) 

Pour référence, mon fichier manifeste est:

 { "name": "SoftwareGrid", "version": "0.5", "icons": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" }, "description": "Shows user cresidentials on Linkedin", "permissions": [ "cookies", "tabs", "http://www.linkedin.com/*" ], "browser_action": { "default_title": "Show Profile", "default_icon": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" }, "default_popup": "popup.html" }, "background": { "scripts": ["jquery-1.7.2.min.js","background.js"] }, "content_scripts": [{ "matches": ["http://www.linkedin.com/*"], "all_frames": true, "js": ["jquery-1.7.2.min.js", "script.js"], "run_at": "document_end" }], "web_accessible_resources": [ "icons/i1.png" ], "manifest_version": 2 } 

Mon fichier popup.js:

 function sendClicks() { console.log("popup.js > sendClicks()"); chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { console.log(response.farewell); }); }); console.log("avra' inviato?"); } $(function() { console.log("popup.js > OMD Extension ready"); $('#sendclicks').click(function(){ sendClicks(); }); }); 

Mon fichier de contenu

 chrome.runtime.onMessage.addListener( function(request, sender, sendResponse) { console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension"); if (request.greeting == "hello") sendResponse({farewell: "goodbye"}); }); 

Plz aidez-vous!

Vous devrez peut-être l'ajouter dans votre manifeste:

 "permissions" : ["tabs"]