XML DOM - Range-Objekt
- Vorherige Seite DOM ProcessingInstr
- Nächste Seite DOM RangeException
Ein Range-Objekt stellt einen kontinuierlichen Bereich im Dokument dar.
Range-Objekt
Ein Range-Objekt stellt einen kontinuierlichen Bereich des Dokuments dar, wie der Benutzer den Bereich im Browserfenster mit der Maus zieht.
Wenn eine Implementierung den Range-Modul unterstützt, dann Document-Objektdefiniert createRange() -Methode, indem man es aufruft, kann ein neuer Range-Objekt erstellt werden.
注意:IE definierte den inkompatiblen Dokument.createRange() -Methodenaufruf, der ähnliche Objekte wie das Range-Interface zurückgibt, aber inkompatibel ist.
Das Range-Interface definiert eine Vielzahl von Methoden für die spezifizierte Dokumentauswahl des Dokuments und einige weitere Methoden, die im ausgewählten Bereich für Ausschneiden und Einfügen von Operationen verwendet werden können.
Die Attribute des Range-Interfaces bieten Methoden zur Erstellung der Grenznachrichten und Offset-Werte des Bereichs. Seine Methoden bieten Methoden zum Festlegen der Bereichsgrenzen. Beachten Sie, dass die Bereichsgrenzen auf Document oder DocumentFragment-Objektder Knoten. Sobald die Grenzpunkte des Bereichs definiert sind, können die Methoden deleteContents(), extractContents(), cloneContents() und insertNode() verwendet werden, um Aus剪切、复制和粘贴操作。
Wenn der Dokumentinhalt durch einen Ein- oder Ausgabe-Vorgang geändert wird, ändern sich alle Range-Objekte, die ein Teil des Dokuments darstellen (wenn nötig), um sicherzustellen, dass ihre Grenzpunkte gültig bleiben und sie (so nahe wie möglich) denselben Dokumentinhalt darstellen.
Begriff: Bereich, Grenzpunkt und Offset
Ein Bereich hat zwei Grenzpunkte, nämlich einen Anfangs- und einen Endpunkt. Jeder Grenzpunkt wird durch einen Knoten und den Offset dieses Knotens bestimmt. Dieser Knoten ist normalerweise Element-Knoten,Document-Knotenoder Text-KnotenFür den Element-Knoten und den Document-Knoten bezieht sich der Offset auf die Unter-Knoten des Knotens. Ein Offset von 0 bedeutet, dass der Grenzpunkt vor dem ersten Unter-Knoten des Knotens liegt. Ein Offset von 1 bedeutet, dass der Grenzpunkt nach dem ersten Unter-Knoten des Knotens, aber vor dem zweiten Unter-Knoten liegt. Wenn der Grenzpunkt jedoch ein Text-Knoten ist, bezieht sich der Offset auf die Position zwischen zwei Zeichen im Text.
Range 对象的常量
这些常量指定了如何比较 Range 对象的边界点。
它们是 compareBoundaryPoints() 方法的 how 参数的合法值:
常量 | 描述 |
---|---|
START_TO_START | 用指定范围的开始点与当前范围的开始点进行比较。 |
START_TO_END | 用指定范围的开始点与当前范围的结束点进行比较。 |
END_TO_END | 用指定范围的结束点与当前范围的结束点进行比较。 |
END_TO_START | 用指定范围的结束点与当前范围的开始点进行比较。 |
Range 对象的属性
注意:所有属性都是只读的,不能通过设置这些属性改变范围的开始点和结束点,必须调用 setEnd() 方法和 setStart() 方法实现这一点。
注意:调用 detach() 方法后,对这些属性的任何读操作都会抛出代码为 INVALID_STATE_ERR 的 DOMException-Fehler.
属性 | 描述 |
---|---|
collapsed | 如果范围的开始点和结束点在文档的同一位置,则为 true,即范围是空的,或折叠的。 |
commonAncestorContainer | 范围的开始点和结束点的(即它们的祖先节点)、嵌套最深的 Document 节点。 |
endContainer | 包含范围的结束点的 Document 节点。 |
endOffset | endContainer 中的结束点位置。 |
startContainer | 包含范围的开始点的 Document 节点。 |
startOffset | startContainer 中的开始点位置。 |
Range 对象的方法
注意:如果调用了范围的 detach() 方法,那么接下来调用 Range 对象的任何方法都会抛出代码为 INVALID_STATE_ERR 的 DOMException-Fehler.
方法 | 描述 |
---|---|
cloneContents() | 返回新的 DocumentFragment 对象,它包含该范围表示的文档区域的副本。 |
cloneRange() | 创建一个新的 Range 对象,表示与当前的 Range 对象相同的文档区域。 |
collapse() | Klappt den Bereich zusammen, sodass seine Grenzpunkte übereinstimmen. |
compareBoundaryPoints() | Vergleicht die Grenzpunkte der angegebenen Bereiche mit den Grenzpunkten des aktuellen Bereichs und gibt -1, 0 und 1 zurück, basierend auf ihrer Reihenfolge. Der Vergleich des Grenzpunkts wird durch den ersten Parameter angegeben, dessen Wert einer der zuvor definierten Konstanten sein muss. |
deleteContents() | Löscht den durch den aktuellen Range-Objekt dargestellten Dokumentbereich. |
detach() | Benachrichtigt die Implementierung, dass der aktuelle Bereich nicht mehr verwendet wird und die Verfolgung kann beendet werden. Wenn diese Methode des Bereichs aufgerufen wird, wird bei jedem folgenden Aufruf einer Methode des Bereichs, die diesen Fehlercode zurückgibt, INVALID_STATE_ERR ausgelöst. DOMException-Fehler. |
extractContents() | Löscht den durch den aktuellen Bereich dargestellten Dokumentbereich und gibt den Inhalt in Form eines DocumentFragment-Objekts zurück. Diese Methode ist sehr ähnlich zu einer Kombination aus der Methode deleteContents() und der Methode cloneContents(). |
insertNode() | Fügt den angegebenen Knoten an den Anfang des Dokumentenbereichs des Bereichs ein. |
selectNode() | Setzt die Grenzpunkte des Bereichs, sodass er den angegebenen Knoten und alle seine Nachkommen enthält. |
selectNodeContents() | Setzt die Grenzpunkte des Bereichs, sodass er die Nachkommen der angegebenen Knoten enthält, aber den angegebenen Knoten selbst nicht. |
setEnd() | Setzt den Endpunkt des Bereichs auf den angegebenen Knoten und den Abstand. |
setEndAfter() | Setzt den Endpunkt des Bereichs auf unmittelbar nach dem angegebenen Knoten. |
setEndBefore() | Setzt den Endpunkt des Bereichs auf unmittelbar vor dem angegebenen Knoten. |
setStart() | Setzt den Anfangspunkt des Bereichs auf den angegebenen Abstand innerhalb des angegebenen Knotens. |
setStartAfter() | Setzt den Anfangspunkt des Bereichs auf unmittelbar nach dem angegebenen Knoten. |
setStartBefore() | Setzt den Anfangspunkt des Bereichs auf unmittelbar vor dem angegebenen Knoten. |
surroundContents() | Fügt den angegebenen Knoten an den Anfang des Dokumentenbereichs des Bereichs ein und setzt die Eltern aller Knoten im Bereich neu, sodass sie Nachkommen des neu eingefügten Knotens werden. |
toString() | Gibt den reinen Textinhalt des durch diesen Bereich dargestellten Dokumentbereichs zurück. |
- Vorherige Seite DOM ProcessingInstr
- Nächste Seite DOM RangeException