2009-05-10 3 views
3

Vor einigen Jahren habe ich "smart quoting" zu einem Webforum hinzugefügt. Grundsätzlich wählt der Benutzer einen Teil in der vorherigen Konversation und klickt auf eine Schaltfläche, um ihn zu zitieren. Script erhält den HTML-Code des Zitats und geht den DOM-Baum hinauf, um herauszufinden, wer das gesagt hat.Wie bekomme ich die Auswahl HTML und Auswahl Eltern?

Ich konnte es nur für IE tun, obwohl ich mich erinnere, mich zu bemühen. Aber dann gab es keinen stackoverflow.com und Firefox war nicht so ausgereift. Ich nehme an, dass es jetzt so einfach ist, es in Firefox zu tun. Hier ist der Schlüssel des Codes.

Element frameDoc enthält den vorherigen Thread, in dem Benutzer Text auswählt Wenn es zu wenig Sinn macht, sehen Sie den ganzen Code here. Es ist ein Plugin für FCKeditor.

+0

Es scheint, dass Sie bereits einen funktionierenden Code haben. Ich verstehe das Problem nicht, das Sie haben –

Antwort

5

OK, Ich habe versucht, den Code in Firefox zu laufen und es hat nicht funktioniert, das ist die modifizierte Version, die funktioniert:

var selection = window.getSelection(); 
var node = selection.anchorNode; 

while (node.nodeName != 'BODY' && !node.id.match(/postrow/)){ 
    node = node.parentNode; 
} 
+0

Danke, Nadia. Ich erinnerte mich tatsächlich an dieses ungelöste Problem von mir, nachdem ich deine letzte Antwort auf [diese Frage] gelesen habe (http://stackoverflow.com/questions/845390/javascript-to-get-paragraph-of-selected-text-in-web-page/845398 # 845398). Mein Hauptproblem ist in createRange/htmlText, die IE nur Technologie ist. –

+0

Ja, die Dokumentation dazu finden Sie unter https://developer.mozilla.org/en/nsISelection –

+0

Wollen Sie sagen, dass die htmlText-Methode jetzt von Mozilla unterstützt wird? Es ist nicht in dem oben verlinkten Dokument. –