2010-01-14 23 views
10

Ho cercato sul Web di scoprire come accedere al DOM delle schede correnti per estrarre informazioni da una pagina dallo background.html. Finora non ho avuto fortuna, o almeno niente che potrei ottenere per funzionare correttamente.Estensione Google Chrome - Accesso al DOM

Per indicare il problema in modo semplice. Mi piacerebbe avere src di un iFrame nella pagina. Eventuali suggerimenti?

risposta

7

In un modo, si tratta di una singola richiesta allo script di contenuto che preleva il dom a cui si desidera accedere. http://code.google.com/chrome/extensions/messaging.html#simple

In sostanza, lo script contenuti imposta l'ascoltatore:

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

E sfondo della pagina invia una singola richiesta vissuta:

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

Quando si invia la risposta, si invia come Dati JSON, puoi recuperare ciò che vuoi (come html, dom, testo, ecc.).

Attualmente è l'unico modo per consentire alla pagina di sfondo di conoscere qualcosa del contenuto di una pagina. Ricorda che avresti bisogno di script di contenuto e permessi di tabulazione.

+8

Si noti che questa risposta è obsoleta. 'SendRequest' e 'getSelected' sono deprecati. Lo script fornito non funziona. – sbichenko

+4

aaaand deve essere sostituito con sendMessage/onMessage in Chrome 20 –

+1

aaaaa e un esempio sarebbe eccellente. :-) – Ajax

Problemi correlati