Range#
Range.detach()#
Metoda detach()
nie robi niczego sensownego. Pozostawiono ją w celu zachowania kompatybilności ze starszymi implementacjami.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
range.detach();
gdzie poszczególne człony oznaczają:
- range - zakres będący obiektem kontekstu.
Algorytm wywołania metody detach()
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Nie rób niczego.
Prosty przykład:
<script>
// Tworzymy nowy zakres
var range = document.createRange();
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
document.write("<br><br>");
range.detach();
document.write(range.startContainer); // [object HTMLDocument] Firefox i Chrome, wyjątek InvalidStateError dla pozostałych przeglądarek
</script>
Na chwilę obecną jedynie przeglądarki Firefox i Chrome obsługują metodę detach()
zgodnie z najnowszymi wymaganiami specyfikacji DOM4.
W przypadku pozostałych programów metoda całkowicie odłącza (dezaktywuje) dany zakres, co jest prawidłowe względem poprzedniego standardu. Wszystkie zasoby związane z zakresem zostają zwolnione i nie można wywoływać na nim żadnych poleceń (zgłoszony zostanie wyjątek "InvalidStateError"
). Ponowna aktywacja zakresu nie jest już możliwa, należy utworzyć nowy obiekt.
Składnia Web IDL#
interface Range { void detach(); }