Document#

Document.createRange()#

Metoda createRange() tworzy nowy obiekt typu Range (tzw. zakres) dla danego dokumentu.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var new_range = document.createRange();

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody createRange() nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Zwróć nowy obiekt typu Range z początkiem i końcem w postaci (obiekt kontekstu, 0).

Każdy nowy zakres utworzony metodą createRange() lub podobnie działającym konstruktorem new Range() jest domyślnie zwinięty. Dopiero po utworzeniu zakresu możemy zmieniać jego punkty graniczne (szczegóły).

Obiekt zwracany przez metodę createRange() implementuje interfejs Range, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia).

Więcej szczegółów związanych z zakresami umieściłem w zbiorczym dziale "Podstawy - Zakresy".

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	// Tworzymy nowy zakres
	var range = document.createRange();

	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>

W poprzedniej specyfikacji metoda createRange() definiowana była w specjalnym interfejsie DocumentRange, ale z dopiskiem, że może być implementowana bezpośrednio w interfejsie Document.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Document : Node {
	[NewObject] Range createRange();
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Document (H1) Document.createRange() (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)