Range#

Range.commonAncestorContainer#

Właściwość commonAncestorContainer zwraca referencję do najbardziej zagnieżdżonego przodka obejmującego dla węzła początkowego i węzła końcowego w danym zakresie. Zakładamy, że schodzimy w dół drzewa węzłów, w którym zawarte są jego punkty graniczne. Właściwość jest tylko do odczytu.

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 ancestor = range.commonAncestorContainer;

gdzie poszczególne człony oznaczają:

W zależności od podejmowanej akcji muszą zostać wykonane następujące kroki:

Odczyt wartości atrybutu (getting):

  1. Niech container będzie węzłem początkowym w obiekcie kontekstu.
  2. Dopóki (while) container nie jest przodkiem obejmującym dla węzła końcowego w obiekcie kontekstu, to niech container będzie rodzicem w container.
  3. Zwróć container.

W przypadku zwiniętych zakresów zwracanym przodkiem obejmującym będzie jeden i ten sam węzeł, który jest jednocześnie jego węzłem początkowym i węzłem końcowym. Kiedy węzeł początkowy zawiera węzeł końcowy (lub odwrotnie) to zwrócony zostanie węzeł początkowy (lub węzeł końcowy dla sytuacji odwrotnej).

Ponieważ zakres nie musi być ciągły i może także częściowo obejmować węzły, to właściwość commonAncestorContainer udostępnia wygodny sposób, aby znaleźć węzeł, który otacza cały zakres (jednocześnie jego węzeł początkowy i węzeł końcowy).

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.commonAncestorContainer); // [object HTMLDocument]

	document.write("<br><br>");

	// Zmieniamy punkty graniczne zakresu (od HTML do HEAD)
	range.setStart(document.documentElement, 0);
	range.setEnd(document.documentElement.firstChild, 0);

	document.write(range.commonAncestorContainer); // [object HTMLHtmlElement]

	document.write("<br><br>");

	// Zmieniamy punkty graniczne zakresu (od HTML do Document)
	range.setStart(document.documentElement, 0);
	range.setEnd(document, 0);

	document.write(range.commonAncestorContainer); // [object HTMLDocument]

</script>

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Range {
	readonly attribute Node commonAncestorContainer;
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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