Comment#

new Comment()#

Interfejs Comment może być wywoływany w roli konstruktora, dzięki czemu pozwala na bezpośrednie tworzenie nowych węzłów komentarzowych wprost z interfejsu. Przy tworzeniu węzła komentarzowego od razu ustalane są jego dane tekstowe.

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_comment = new Comment([data = ""]);

gdzie poszczególne człony oznaczają:

Algorytm wywołania konstruktora new Comment(data) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Zwróć nowy węzeł typu Comment z danymi tekstowymi wskazywanymi przez data, którego właścicielem jest dokument skojarzony z globalnym obiektem.

Konstruktor nie weryfikuje poprawności przekazanych danych tekstowych wymaganych dla węzłów komentarzowych w przypadku XML-a, np. pod względem dopasowania do wzorca Char lub unikania dwóch sąsiadujących myślników czy też końcówki z myślnikiem.

Nowy węzeł komentarzowy zwracany przez konstruktor new Comment() nie jest częścią danego drzewa dokumentu dopóki nie zostanie dodany do innego węzeła należącego do drzewa dokumentu. Dlatego nowy węzeł komentarzowy nie będzie posiadał rodzica (wartość null), aczkolwiek dalej posiada jakiegoś właściciela.

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

Alternatywnie można skorzystać z podobnie działającej metody Document.createComment().

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 addComment(data){

			var p = document.getElementById("tekst");
			var info = document.getElementById("info");

			var newComment = new Comment(data);
			p.appendChild(newComment);
			var comments = p.childNodes.length - 1;

			info.innerHTML = "Liczba węzłów komentarzowych w akapicie po kolejnym dodaniu nowego węzła: "
				+ comments
				+ "<br>" + "Interfejs nowego węzła komentarzowego: " + newComment
				+ "<br>" + "Dane tekstowe nowego węzła komentarzowego: " + newComment.data
				+ "<br><br>" + "Testowy akapit po serializacji: " + "<br>";

			var newText = document.createTextNode("");
			newText.data = new XMLSerializer().serializeToString(p);
			info.appendChild(newText);

		}

	</script>

</head>

<body>
	<p>Kliknij konkretny przycisk by dodać nowy węzeł komentarzowy do testowego akapitu.</p>
	<input type="button" value="new Comment(' Test1')" onclick="addComment('Test1')">
	<input type="button" value="new Comment(' Test2')" onclick="addComment('Test2')">
	<input type="button" value="new Comment(null)" onclick="addComment(null)">
	<input type="button" value="new Comment('')" onclick="addComment('')">
	<input type="button" value="new Comment('-')" onclick="addComment('-')">
	<input type="button" value="new Comment('--')" onclick="addComment('--')">
	<p id="tekst" >Węzeł tekstowy umieszczony w testowym akapicie.</p>

	<p style="color: blue;">Szczegółowe informacje o akapicie i nowym węźle komentarzowym:</p>
	<p id="info"></p>
</body>

</html>

Na chwilę obecną jedynie przeglądarki Firefox i Chrome pozwalają wywoływać interfejs Comment w roli konstruktora.

Konstruktor new Comment() pojawia się dopiero w specyfikacji DOM4.

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
[Constructor(optional DOMString data = "")]
interface Comment : CharacterData {
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Comment (H1) new Comment() (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)