2012-03-25 13 views
21

Chcę sprawdzić pewne wartości w treści strony w przeglądarce Chrome, gdy całkowicie załadowana takiegona stronie obciążenia w przypadku rozszerzeń Chrome

if(document.body.innerText.indexOf("Cat") !=-1) 

Gdzie i kiedy mogę zrobić mój czek? proszę mi dać wyraźny przykład czytałem kilka rzeczy o „Background.html” i „Content” skryptu, ale nie mogę zrobić

Odpowiedz

48

Register a content script in the manifest file na "run_at": "document_idle" (który jest domyślny) i umieścić swój kod w pliku skryptu zawartości . Następnie skrypt zostanie uruchomiony po przygotowaniu strony.

Jeśli chcesz wykryć na stronie w tle, czy strona jest całkowicie załadowana, użyj zdarzenia chrome.webNavigation.onCompleted i wykonaj, co chcesz, na przykład wywołanie chrome.tabs.executeScript, aby wykonać skrypt zawartości. Ta metoda może być przydatna w stosunku do poprzedniej metody, jeśli lista adresów URL jest dynamiczna lub jeśli nie można opisać wzorców adresów URL za pomocą składni match pattern.

chrome.webNavigation.onCompleted.addListener(function(details) { 
    chrome.tabs.executeScript(details.tabId, { 
     code: ' if (document.body.innerText.indexOf("Cat") !=-1) {' + 
       '  alert("Cat not found!");' + 
       ' }' 
    }); 
}, { 
    url: [{ 
     // Runs on example.com, example.net, but also example.foo.com 
     hostContains: '.example.' 
    }], 
}); 

W webNavigation i gospodarza uprawnienia muszą być ustawione w manifest.json, np:

{ 
    "name": "Test", 
    "version": "1.0", 
    "background": { "scripts": ["background.js"] }, 
    "permissions": [ "webNavigation", "*://*/*" ], 
    "manifest_version": 2 
} 
+0

Dzięki Rob W, ale mam dużo kodu po sprawozdaniach kontrolnych, nie mogę napisać to po "code:" "Czy mogę wywołać funkcję? – JustMe

+2

@ user1291538 Możesz umieścić go w osobnym pliku w rozszerzeniu i użyć 'file: 'nameoffile.js'' zamiast'' code ':' ... ''- Zobacz także [dokumentację powiązaną] (http: //code.google.com/chrome/extensions/tabs.html#method-executeScript). –

+0

@Xan, to "manifest_version": 2. Nie 1. – Dudi

Powiązane problemy