2010-05-26 3 views
3

Pour une extension Google Chrome, aucun des Javascript que j'écris pour manipuler le DOM de l'extension popup.html ne semble avoir d'effet sur le DOM du popup. Je peux très bien manipuler le DOM de la page web actuelle dans le navigateur en utilisant content_script.js, et je suis intéressé à saisir les données de la page web et à les sortir dans le popup, comme ceci (ci-dessous: popup.html):Comment extraire des données d'une page Web dans Chrome et les afficher dans la fenêtre contextuelle de l'extension Chrome?

<div id="extensionpopupcontent">Links</div> 
<a onclick="click()">Some Link</a> 

<script type="text/javascript"> 
function click() { 
    chrome.tabs.executeScript(null, {file: "content_script.js"}); 
    document.getElementById("extensionpopupcontent").innerHTML = variableDefinedInContentScript; 
    window.close(); 
} 
</script> 

J'ai essayé d'utiliser chrome.extension.sendRequest de la documentation à http://code.google.com/chrome/extensions/messaging.html, mais je ne suis pas sûr de savoir comment utiliser correctement dans mon cas, en particulier l'accueil et la réponse.

contentscript.js 
================ 
chrome.extension.sendRequest({greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
}); 

Répondre

2

Jusqu'à présent, ce que vous avez fait est correct. La seule chose qui vous manque est que vous devez configurer un écouteur d'événement chrome.extension.onRequest pour gérer le message revenant du script de contenu dans le popup.

Ce faisant quelque chose comme ça dans le menu contextuel devrait fonctionner (en sus):

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

Ce que l'extrait ci-dessus fera, il écoutera les événements du script de contenu (sender.tab == true lorsque son provenant d'un script de contenu).

Si vous lisez la page entière sur la messagerie, il explique tout cela avec de bons exemples: http://code.google.com/chrome/extensions/messaging.html

+0

avère que je devais aussi ce dans le script de contenu: var myMessage = « ... »; // Variable à transmettre à l'extension chrome.extension.sendRequest ({message d'accueil: myMessage}, fonction (réponse) {}); Et où vous avez sendResponse ({adieu: "au revoir"}); dans popup.html, c'est là que nous faisons quelque chose avec cette variable. – chimerical

Questions connexes