2012-06-14 3 views
5

Ich versuche, Daten von einer Seite zu ziehen, die ein Benutzer anzeigt, und diese Daten an das Erweiterungs-Popup zu senden. Ich habe Probleme beim Extrahieren von Informationen von der aktuellen Seite. Nach der Überprüfung der Google Code-Tutorials habe ich mein Manifest- und Inhaltsskript wie unten gezeigt eingerichtet. Wenn ich zu einer Testseite gehe, die einen Bereich mit id = "comments" hat, endet meine Variable aus dem Script für injected contents immer als null. Wer weiß, was ich vermissen könnte? Vielen Dank!Inhaltsskript für Chrome-Erweiterung, das nicht auf das DOM der Seite zugreift, in das es eingefügt wird

manifest.json 
================= 
{ 
    "name": "Sample Extension", 
    "version": "0.0.1", 
    "description": "Sample extension", 
    "icons": {"128": "icon.png"}, 
    "permissions": [ 
     "tabs", "<all_urls>" 
    ], 
    "browser_action": { 
     "default_icon": "browseraction.png", 
     "default_title": "Sample", 
     "popup": "popup.html" 
    }, 
    "content_scripts": [ 
     { 
      "matches": ["http://*/*", "<all_urls>" ], 
      "js": ["scripts/contentscript.js"] 
     } 
    ] 
} 

contentscript.js 
=================== 
var comments = document.getElementById("comments"); 
alert(comments.innerText); 

Antwort

6

Es ist möglich, dass die Kommentare nach der Ausführung Ihres Skripts geladen werden.

Versuchen Sie dies im Manifest zu setzen:

 "run_at" : "document_end", 

Oder wenn Sie einen AJAX-Laden vermuten, Ihren Code mit einem setTimeout später an.

Natürlich würde das beste Schema von der genauen Seite und seiner inneren Arbeit abhängen.

+1

+1 aber er sollte wahrscheinlich 'textContent' verwenden. –

+0

Danke, Jungs! Ich habe beide Vorschläge mit "run_at" und "textContent" verwendet und sie haben perfekt funktioniert. – sojo2600

+0

'innerText' wird im Entwicklerhandbuch der Chrome-Erweiterung empfohlen. - Keine Notwendigkeit, es hier zu vermeiden. –

Verwandte Themen