Range#
new Range()#
Interfejs Range może być wywoływany w roli konstruktora, dzięki czemu pozwala na bezpośrednie tworzenie nowych zakresów wprost z interfejsu.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var new_range = new Range();
gdzie poszczególne człony oznaczają:
- new_range - referencja do nowego zakresu.
Algorytm wywołania konstruktora new Range()
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 (dokument skojarzony z globalnym obiektem,0
).
Każdy nowy zakres utworzony konstruktorem new Range()
lub podobnie działającą metodą Document.createRange()
jest domyślnie zwinięty. Dopiero po utworzeniu zakresu możemy zmieniać jego punkty graniczne (szczegóły).
Obiekt zwracany przez konstruktor new Range()
implementuje interfejs Range, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia).
Prosty przykład:
<script>
// Tworzymy nowy zakres
var range = new Range();
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>
Na chwilę obecną jedynie przeglądarki Firefox i Chrome pozwalają wywoływać interfejs Range w roli konstruktora.
Konstruktor new Range()
pojawia się dopiero w specyfikacji DOM4.
Składnia Web IDL#
[Constructor] interface Range { };