html - Auswahl - immer die range + Startknoten + Endung-Knoten + Abstand
Aus meiner Vorherige Frage für die Auswahl von bestimmten html-text, die ich durchgemacht habe dieser link zu verstehen-Bereich im html-string.
Für die Auswahl eines bestimmten Textes auf html-Seite. Wir müssen befolgen Sie diese Schritte.
Davon ausgegangen HTML:
<h4 id="entry1196"><a
href="http://radar.oreilly.com/archives/2007/03/call_for_a_blog_1.html"
class="external">Call for a Blogger's Code of Conduct</a></h4>
<p>Tim O'Reilly calls for a Blogger Code of Conduct. His proposals are:</p>
<ol>
<li>Take responsibility not just for your own words, but for the
comments you allow on your blog.</li>
<li>Label your tolerance level for abusive comments.</li>
<li>Consider eliminating anonymous comments.</li>
</ol>
java-script, um die Auswahl durch Auswahl
var range = document.createRange(); //create range
var startPar = [the p node]; //starting parameter
var endLi = [the second li node]; //ending parameter
range.setStart(startPar,13); //distance from starting parameter.
range.setEnd(endLi,17); //distance from ending parameter
range.select(); //this statement will make selection
Möchte ich dies tun, umkehren, Weg. Ich meine, davon ausgehen, dass die Selektion erfolgt durch den Benutzer auf dem browser (safari). Meine Frage ist, dass, Wie können wir Holen Sie ab-Knoten (da haben wir 'die p-Knoten' hier) und End-Knoten (da haben wir 'der zweite Knoten li' hier) und die Auswahl auch (wie wir 13,17 hier)?
Edit : meine Bemühungen (Von diese Frage)
var sel = window.getSelection();
if (sel.rangeCount < 1) {
return;
}
var range = sel.getRangeAt(0);
var startNode = range.startContainer, endNode = range.endContainer;
//Split the start and end container text nodes, if necessary
if (endNode.nodeType == 3) {
endNode.splitText(range.endOffset);
range.setEnd(endNode, endNode.length);
}
if (startNode.nodeType == 3) {
startNode = startNode.splitText(range.startOffset);
range.setStart(startNode, 0);
}
Aber, aber ich bin verwirrt über wie immer, wenn er aktiviert ist, den ersten Absatz oder zweite oder Dritte oder ausgewählt haben, wird in der ersten Position oder der zweiten Position oder was....
- Könnte Sie klären, was genau Sie erreichen wollen?
- Unten, lassen Sie mich erklären. Benutzer-Auswahl & tippt auf eine Taste. Ich brauche zum speichern der Auswahl, die der Benutzer ausgewählt hat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern wird der ausgewählte Bereich einfach. Im folgenden wird wieder nur der erste ausgewählte Bereich (Firefox zumindest unterstützt die Mehrfachauswahl):
range
EigenschaftenstartContainer
(der Knoten enthält den Anfang des Bereichs),startOffset
(ein offset innerhalb der start-container-Knoten: ein Zeichen-offset in dem Fall der text-nodes und child-offset-in-Elemente),endContainer
undendOffset
(entspricht behvaiour auf die start-Eigenschaften).Range
ist gut dokumentiert, dass die Spezifikation und MDC.Im IE
range
enthält eineTextRange
, die funktioniert ganz anders. Anstatt Knoten und Abstände TextRanges befassen sich mit Zeichen, Wörtern und Sätzen. Die Seite von Microsoft hat eine Dokumentation: http://msdn.microsoft.com/en-us/library/ms533042%28VS.85%29.aspx, http://msdn.microsoft.com/en-us/library/ms535872%28VS.85%29.aspx.