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#

NazwaOpis
Range.collapsedZwraca wartość true jeśli początek i koniec w danym zakresie są tacy sami, w przeciwnym razie wartość false.
Range.commonAncestorContainerZwraca najbardziej zagnieżdżonego przodka obejmującego dla węzła początkowego i węzła końcowego w danym zakresie.
Range.endContainerZwraca węzeł końcowy w danym zakresie.
Range.endOffsetZwraca przesunięcie końcowe w danym zakresie.
Range.startContainerZwraca węzeł początkowy w danym zakresie.
Range.startOffsetZwraca przesunięcie początkowe w danym zakresie.

Metody Range#

NazwaOpis
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#

NazwaZapis dziesiętnyZapis szesnastkowyZnaczenie
START_TO_START #00Lewy START - zakres przekazany do metody.
Prawy START - zakres wywołujący metodę.
Porównanie prawy START względem lewy START.
START_TO_END #11Lewy START - zakres przekazany do metody.
Prawy END - zakres wywołujący metodę.
Porównanie prawy END względem lewy START.
END_TO_END #22Lewy END - zakres przekazany do metody.
Prawy END - zakres wywołujący metodę.
Porównanie prawy END względem lewy END.
END_TO_START #33Lewy END - zakres przekazany do metody.
Prawy START - zakres wywołujący metodę.
Porównanie prawy START względem lewy END.

Inne Range#

NazwaOpis
new Range()Konstruktor tworzący nowy zakres.
stringifierOkreśla reguły zamiany zakresu na łańcuch znakowy.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
[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;
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Range (H1) Wstęp (H2) Właściwości Range (H3) Metody Range (H3) Stałe Range (H3) Inne Range (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)