Range#
Range.collapse()#
Metoda collapse()
wykonuje zwinięcie danego zakresu do jego początku lub do jego końca (w zależności od przekazanego argumentu).
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
range.collapse([toStart = false
]);
gdzie poszczególne człony oznaczają:
- range - zakres będący obiektem kontekstu.
- toStart - boolowskie
true
oznacza przesunięcie końca do początku, natomiastfalse
oznacza przesunięcie początku na koniec. Parametr jest opcjonalny z domyślną wartością ustawianą nafalse
.
Algorytm wywołania metody collapse(toStart)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Jeśli toStart ma boolowską wartość
true
, to ustaw koniec na początek. W przeciwnym razie ustaw początek na koniec.
Zwinięcie zakresu tak naprawdę oznacza posiadanie przez zakres jednego punktu granicznego (identycznego początku jak i końca). Zwinięty zakres nie posiada żadnej zawartości.
Zwinięcie zakresu najłatwiej ustalić za pomocą dedykowanej właściwości Range.collapsed
.
Prosty przykład:
<script>
// Tworzymy nowy zakres
var range = document.createRange();
document.write(range.collapsed); // true - zakres zwinięty
document.write("<br><br>");
// Zmieniamy koniec zakresu na węzeł HTML
range.setEnd(document.documentElement, 0);
document.write(range.collapsed); // false - zakres nie jest zwinięty
// Zwijamy zakres na koniec
range.collapse(); // tylko Firefox i Chrome przyjmuje domyślną wartość
document.write("<br><br>");
document.write(range.collapsed); // true - zakres znowu zwinięty
document.write("<br>");
document.write(range.startContainer); // [object HTMLHtmlElement]
document.write("<br>");
document.write(range.startOffset); // 0
document.write("<br>");
document.write(range.endContainer); // [object HTMLHtmlElement]
document.write("<br>");
document.write(range.endOffset); // 0
</script>
Na chwilę obecną jedynie przeglądarki Firefox i Chrome w całości obsługują metodę collapse()
zgodnie z najnowszymi wymaganiami specyfikacji DOM4, gdyż faktycznie zezwalają na pominięcie argumentu określającego kierunek zwinięcia zakresu. Pozostałe programy działają jeszcze według starszego podejścia i w takiej sytuacji zwracają błąd.
Składnia Web IDL#
interface Range { void collapse(optional boolean toStart = false); }