Range#
Wstęp#
Interfejs Range stanowi definicję Web IDL dla obiektu, który pozwala na swobodne zaznaczenie pewnej części z drzewa węzłów. Jest to kolejny sposób pozwalający na łatwe manipulowanie węzłami i ich zawartością w drzewie węzłów. Obiekty typu Range
są potocznie nazywane zakresami # (ranges) i skojarzone zostały z kilkoma podstawowymi zagadnieniami.
W przeszłości interfejs Range definiowany był w osobnej specyfikacji DOM Level 2 Traversal and Range (W3C). Obecnie został całkowicie przeniesiony do DOM4 z pewnymi modyfikacjami.
Zakres operuje bezpośrednio na drzewie węzłów, w zasadzie to zapamiętuje on jedynie pewne kluczowe parametry, dlatego każda zmiana węzła w takim drzewie może mieć wpływ na stan zakresu (szczegóły).
Interfejs Range nie dziedziczy z żadnego innego interfejsu w ogólnym ujęciu DOM, chociaż w środowisku JS obiekty implementujące ten interfejs będą dziedziczyły z prototypu najwyższego rzędu. Zachowanie takie jest czymś normalnym w przypadku języka ECMAScript.
Zakres można uzyskać za pomocą poleceń:
Poniższe rozszerzenia dla interfejsu Range są definiowane w innych specyfikacjach:
Właściwości Range#
Nazwa | Opis |
---|---|
Range.collapsed | Zwraca wartość true jeśli początek i koniec w danym zakresie są tacy sami, w przeciwnym razie wartość false . |
Range.commonAncestorContainer | Zwraca najbardziej zagnieżdżonego przodka obejmującego dla węzła początkowego i węzła końcowego w danym zakresie. |
Range.endContainer | Zwraca węzeł końcowy w danym zakresie. |
Range.endOffset | Zwraca przesunięcie końcowe w danym zakresie. |
Range.startContainer | Zwraca węzeł początkowy w danym zakresie. |
Range.startOffset | Zwraca przesunięcie początkowe w danym zakresie. |
Metody Range#
Nazwa | Opis |
---|---|
Range.cloneContents() | Zwraca kopię zawartości danego zakresu w postaci węzła typu DocumentFragment . |
Range.cloneRange() | Zwraca kopię danego zakresu. |
Range.collapse() | Zwija dany zakres do początku lub do końca. |
Range.compareBoundaryPoints() | Zwraca wartość liczbową -1 , 0 lub 1 , w zależności od tego, czy punkt graniczny w danym zakresie znajduje się przed, jest równy, lub znajduje się za punktem granicznym w przekazanym zakresie. |
Range.comparePoint() | Zwraca wartość liczbową -1 , 0 lub 1 , w zależności od tego, czy przekazany punkt graniczny znajduje się przed, w środku, lub za danym zakresem. |
Range.deleteContents() | Usuwa z drzewa węzłów zawartość danego zakresu. |
Range.detach() | Nie robi niczego sensownego. |
Range.extractContents() | Usuwa z drzewa węzłów zawartość danego zakresu i zwraca ją w postaci węzła typu DocumentFragment . |
Range.insertNode() | Wstawia przekazany węzeł na początek danego zakresu. |
Range.intersectsNode() | Zwraca wartość true jeśli przekazany węzeł krzyżuje się z danym zakresem, w przeciwnym razie wartość false . |
Range.isPointInRange() | Zwraca wartość true jeśli przekazany punkt graniczny znajduje się w danym zakresie, w przeciwnym razie wartość false . |
Range.selectNode() | Ustawia dany zakres na przekazany węzeł i całą jego zawartość. |
Range.selectNodeContents() | Ustawia dany zakres na zawartość przekazanego węzła. |
Range.setEnd() | Ustawia koniec w danym zakresie. |
Range.setEndAfter() | Ustawia koniec w danym zakresie za przekazanym węzłem. |
Range.setEndBefore() | Ustawia koniec w danym zakresie przed przekazanym węzłem. |
Range.setStart() | Ustawia początek w danym zakresie. |
Range.setStartAfter() | Ustawia początek w danym zakresie za przekazanym węzłem. |
Range.setStartBefore() | Ustawia początek w danym zakresie przed przekazanym węzłem. |
Range.surroundContents() | Otacza zawartość danego zakresu przekazanym węzłem i ustawia dany zakres na przekazany węzeł. |
Stałe Range#
Nazwa | Zapis dziesiętny | Zapis szesnastkowy | Znaczenie |
---|---|---|---|
START_TO_START # | 0 | 0 | Lewy START - zakres przekazany do metody.Prawy START - zakres wywołujący metodę.Porównanie prawy START względem lewy START . |
START_TO_END # | 1 | 1 | Lewy START - zakres przekazany do metody.Prawy END - zakres wywołujący metodę.Porównanie prawy END względem lewy START . |
END_TO_END # | 2 | 2 | Lewy END - zakres przekazany do metody.Prawy END - zakres wywołujący metodę.Porównanie prawy END względem lewy END . |
END_TO_START # | 3 | 3 | Lewy END - zakres przekazany do metody.Prawy START - zakres wywołujący metodę.Porównanie prawy START względem lewy END . |
Inne Range#
Nazwa | Opis |
---|---|
new Range() | Konstruktor tworzący nowy zakres. |
stringifier | Określa reguły zamiany zakresu na łańcuch znakowy. |
Składnia Web IDL#
[Constructor] interface Range # { readonly attribute Node startContainer; readonly attribute unsigned long startOffset; readonly attribute Node endContainer; readonly attribute unsigned long endOffset; readonly attribute boolean collapsed; readonly attribute Node commonAncestorContainer; void setStart(Node node, unsigned long offset); void setEnd(Node node, unsigned long offset); void setStartBefore(Node node); void setStartAfter(Node node); void setEndBefore(Node node); void setEndAfter(Node node); void collapse(optional boolean toStart = false); void selectNode(Node node); void selectNodeContents(Node node); const unsigned short START_TO_START = 0; const unsigned short START_TO_END = 1; const unsigned short END_TO_END = 2; const unsigned short END_TO_START = 3; short compareBoundaryPoints(unsigned short how, Range sourceRange); void deleteContents(); [NewObject] DocumentFragment extractContents(); [NewObject] DocumentFragment cloneContents(); void insertNode(Node node); void surroundContents(Node newParent); [NewObject] Range cloneRange(); void detach(); boolean isPointInRange(Node node, unsigned long offset); short comparePoint(Node node, unsigned long offset); boolean intersectsNode(Node node); stringifier; };