2012-03-25 9 views
21

ich einige Werte in den Inhalt der Chrome-Browser-Seite überprüfen möchten, wenn es vollständig so geladenAuf Seite Load-Ereignis in Chrome-Erweiterungen

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

Wo und wann kann ich meinen Scheck machen? bitte geben Sie mir ein klares Beispiel ich etwas, was über „background.html“ lesen und „Content-Skript“ aber ich kann

Antwort

48

Register a content script in the manifest file bei "run_at": "document_idle" (das ist die Standardeinstellung) und setzen Sie den Code in der Content-Skript-Datei nicht . Dann wird das Skript ausgeführt, wenn die Seite fertig ist.

Wenn Sie von der Hintergrundseite erkennen möchten, ob eine Seite vollständig geladen ist, verwenden Sie das Ereignis chrome.webNavigation.onCompleted und führen Sie beliebige Aktionen aus, z. B. das Aufrufen von chrome.tabs.executeScript zum Ausführen eines Inhaltsskripts. Diese Methode könnte gegenüber der vorherigen Methode nützlich sein, wenn die Liste der URLs dynamisch ist oder wenn die URL-Muster nicht mit der Syntax match pattern beschrieben werden können.

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.' 
    }], 
}); 

Die webNavigation und Host-Berechtigungen haben in manifest.json, zum Beispiel festgelegt werden:

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

Dank Rob W, aber ich habe eine Menge Code nach den Check-Anweisungen, kann ich es nicht geschrieben nach "code: '" kann ich eine Funktion aufrufen? – JustMe

+2

@ user1291538 Sie können es in eine separate Datei innerhalb der Erweiterung einfügen, und verwenden Sie 'file: 'nameoffile.js'' anstelle von'' code ':' ... ''- Siehe auch die [verlinkte Dokumentation] (http: //code.google.com/chrome/extensions/tabs.html#method-executeScript). –

+0

@Xan, es ist "manifest_version": 2. Nicht 1. – Dudi