NodeIterator#

NodeIterator.pointerBeforeReferenceNode#

Właściwość pointerBeforeReferenceNode zwraca boolowską wartość true jeśli pozycja wskaźnika znajduje się przed węzłem referencyjnym w danym iteratorze węzłowym, w przeciwnym razie zwrócona zostanie wartość false. 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 iterator_pointer = nodeIterator.pointerBeforeReferenceNode;

gdzie poszczególne człony oznaczają:

Wszystkie specyficzne zachowania z ustalaniem wartości dla właściwość pointerBeforeReferenceNode można wydedukować z algorytmów związanych z interfejsem NodeIterator, w razie wątpliwości należy je samodzielnie przeanalizować. Teoretyczny opis tego procesu omówiłem w podstawach iteratora węzłowego.

Prosty przykład:

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

<head>

	<script>

		function iterate(direct){

			var info1 = document.getElementById("info1");
			var info2 = document.getElementById("info2");
			var root = document.getElementById("box");
			var dir = "";
			var node = "";
			var nodeText = "";

			if (typeof iterator != "object"){

				iterator = document.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, null);

			}

			if (info1.textContent == ""){

				info1.innerHTML = "pointerBeforeReferenceNode: " + iterator.pointerBeforeReferenceNode
					+ "<br><br>" + "root: " + iterator.root
					+ "<br>" + "referenceNode: " + iterator.referenceNode
					+ "<br>" + "referenceNode.textContent: " + iterator.referenceNode.textContent;

			}

			if (direct == "next"){
				node = iterator.nextNode();
				dir = "nextNode()";
			}

			if (direct == "previous"){
				node = iterator.previousNode();
				dir = "previousNode()";
			}

			if (node){
				nodeText = node.textContent;
			}

			var result = "pointerBeforeReferenceNode: " + iterator.pointerBeforeReferenceNode
				+ "<br><br>" + "referenceNode: " + iterator.referenceNode
				+ "<br>" + "referenceNode.textContent: " + iterator.referenceNode.textContent
				+ "<br><br>" + dir + ": " + node
				+ "<br>" + dir + ".textContent: " + nodeText;

			info2.innerHTML = result;

		}

	</script>

</head>

<body>

	<div id="box">
		<p>Pierwszy akapit w kontenerze DIV.</p>
		<P>Drugi akapit w kontenerze DIV.</p>
		<P>Trzeci akapit w kontenerze DIV.</P>
	</div>

	<p>Kliknij konkretny przycisk by iterować przez kolejne węzły w kontenerze DIV.</p>
	<input type="button" value="nextNode()" onclick="iterate('next')">
	<input type="button" value="previousNode()" onclick="iterate('previous')">

	<p style="color: blue;">Szczegółowe informacje dla utworzonego iteratora:</p>
	<p id="info1"></p>

	<p style="color: blue;">Szczegółowe informacje dla kolejnych przejść iteratora:</p>
	<p id="info2"></p>

</body>

</html>

Na chwilę obecną jedynie przeglądarki Firefox i Chrome (oraz te oparte na WebKicie) obsługują właściwość pointerBeforeReferenceNode.

Właściwość pointerBeforeReferenceNode pojawia się dopiero w specyfikacji DOM4 (wyjaśnienie).

Składnia Web IDL#

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

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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