Document#
Document.createRange()#
Metoda createRange()
tworzy nowy obiekt typu Range
(tzw. zakres) dla danego dokumentu.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var new_range = document.createRange();
gdzie poszczególne człony oznaczają:
- new_range - referencja do nowego zakresu.
- document - dokument będący obiektem kontekstu.
Algorytm wywołania metody createRange()
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć nowy obiekt typu
Range
z początkiem i końcem w postaci (obiekt kontekstu,0
).
Każdy nowy zakres utworzony metodą createRange()
lub podobnie działającym konstruktorem new Range()
jest domyślnie zwinięty. Dopiero po utworzeniu zakresu możemy zmieniać jego punkty graniczne (szczegóły).
Obiekt zwracany przez metodę createRange()
implementuje interfejs Range, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia).
Więcej szczegółów związanych z zakresami umieściłem w zbiorczym dziale "Podstawy - Zakresy".
Prosty przykład:
<script>
// Tworzymy nowy zakres
var range = document.createRange();
document.write(range); // "" - pusty łańcuch
document.write("<br>");
document.write(range.constructor); // function Range() { [native code] }
document.write("<br>");
document.write(typeof range); // object
document.write("<br><br>");
document.write(range.startContainer); // [object HTMLDocument]
document.write("<br>");
document.write(range.endContainer); // [object HTMLDocument]
document.write("<br>");
document.write(range.startOffset); // 0
document.write("<br>");
document.write(range.endOffset); // 0
</script>
W poprzedniej specyfikacji metoda createRange()
definiowana była w specjalnym interfejsie DocumentRange, ale z dopiskiem, że może być implementowana bezpośrednio w interfejsie Document.
Składnia Web IDL#
interface Document : Node { [NewObject] Range createRange(); };