2010-12-21 10 views
0

Ich arbeite an einer Browsererweiterung, die es mir ermöglichen soll, auf Kommentare/Posts in Textboxen zuzugreifen. Viele Websites verwenden jetzt Disqus als Möglichkeit zum Kommentieren, aber ich kann keinen Weg finden, auf das Disqus-Kommentarfeld zuzugreifen (das Disqus-API sagt auch nicht viel), wenn Text eingegeben wird.Javascript für den Zugriff auf Disqus Kommentar Textfeld?

Wer weiß von einer Möglichkeit, darauf zuzugreifen?

Antwort

2

Der beste Weg, um es herauszufinden, ist zu analysieren, wie Disqus API ihr Kommentar-System tut. Ihr bester Freund ist der Inspector (Developer Tools), der mit Google Chrome geliefert wird.

Wenn Sie das DOM analysieren (klicken Sie mit der rechten Maustaste auf den Textbereich des Kommentars), werden Sie feststellen, dass es sich um einen Iframe handelt. Es sollte Ihnen in den Sinn kommen, dass es eine ursprungsübergreifende Anfrage an die Diskus-Domain ist, die Informationen für dieses Kommentar-Box-Plugin zu erhalten. Sie können sehen, dass, wenn Sie auf das Tag schauen, es eine href hat, die auf domain.disqus.com zeigt, wo domain die Website ist, auf die Sie schauen.

Wenn Sie zum Beispiel TechCrunch besuchen, zeigt der Iframe auf http://techcrunch.disqus.com, der das Kommentarfeld eingibt.

Sie können Content-Scripts verwenden, um diese injizierten Seiten zu lesen und zu bearbeiten, da Inhaltsskripts auch in IFrames über alle Frames manifest Name einfügen können.!

Als Beispiel eines Content-Script einrichten, müssen Sie den content_scripts Teil in der Manifest-Datei:

"content_scripts": [ 
    { 
    "matches": ["http://*/*"], 
    "js": ["cs.js"], 
    "run_at": "document_end", 
    "all_frames": true 
    } 

Dann in Ihrem cs.js (Content-Skript-Datei) finden Sie das Kommentarfeld von der Suche nach dem gegebenen iframe.

// We just need to check if the IFrame origin is from discus.com 
if (location.hostname.indexOf('.disqus.com') != -1) { 
    // Extract the textarea (there must be exactly one) 
    var commentBox = document.querySelector('#comment'); 
    if (commentBox) { 
    // Inject some text! 
    commentBox.innerText = 'Google Chrome Injected!'; 
    } 
} 

Am Ende werden Sie die wundervollen Worte "Google Chrome Injected!"

Hoffe, dass Sie einen Push erstellen, der fantastische Chrome-Erweiterungen erstellt :) Der obige Code funktioniert, da ich es lokal getestet habe.

+0

Vielen Dank, so viel! Ich habe die Option "all_frames" nicht erkannt. Das löst mein Problem. – PixelPerfect3

Verwandte Themen