TextEncoder#

new TextEncoder()#

Interfejs TextEncoder może być wywoływany w roli konstruktora, dzięki czemu pozwala na bezpośrednie tworzenie nowych koderów tekstowych wprost z interfejsu.

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_encoder = new TextEncoder();

gdzie poszczególne człony oznaczają:

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

  1. Niech enc będzie nowym obiektem typu TextEncoder.
  2. Ustaw koderTE w enc na koder skojarzony z UTF-8.
  3. Zwróć enc.

Konstruktor new TextEncoder() nie pobiera żadnej etykiety wskazującej na używany koder, w przeciwieństwie do konstruktora new TextDecoder(), gdyż wspiera tylko i wyłącznie UTF-8, chociaż w przeszłości dopuszczano jeszcze UTF-16BE i UTF-16LE. Przekazane argumenty nie mają żadnego wpływu na działanie konstruktora (szczegóły).

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

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 createEncoder(label, variant){

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

			try{

				if (variant == 0){

					label = "brak";
					var new_encoder = new TextEncoder();

				}

				else {

					var new_encoder = new TextEncoder(label);

				}

				info.innerHTML = "Interfejs kodera tekstowego: " + new_encoder
						+ "<br>" + "Argument z konstruktora (łańcuch): " + label
						+ "<br>" + "Właściwość encoding: " + new_encoder.encoding;

			}

			catch(e){

				info.innerHTML = "Wyjątek: " + e
						+ "<br>" + "Argument z konstruktora: " + label;

			}

		}

	</script>

</head>

<body>
	<p>Kliknij przycisk by utworzyć nowy obiekt TextEncoder.</p>
	<ul>
		<li>
			<div>Wywołanie konstruktora bez argumentu:</div>
			<input type="button" value="new TextEncoder()" onclick="createEncoder('', 0)">
		</li>
		<li>
			<div>Wywołanie konstruktora z argumentem, który tak naprawdę jest nieistotny:</div>
			<input type="button" value="new TextEncoder('')" onclick="createEncoder('', 1)">
			<input type="button" value="new TextEncoder('utf8')" onclick="createEncoder('utf8', 1)">
			<input type="button" value="new TextEncoder('UTF8')" onclick="createEncoder('UTF8', 1)">
			<input type="button" value="new TextEncoder('utf-16be')" onclick="createEncoder('utf-16be', 1)">
			<input type="button" value="new TextEncoder('utf-16le')" onclick="createEncoder('utf-16le', 1)">
			<input type="button" value="new TextEncoder('iso-8859-2')" onclick="createEncoder('iso-8859-2', 1)">
			<input type="button" value="new TextEncoder('csiso2022kr')" onclick="createEncoder('csiso2022kr', 1)">
			<input type="button" value="new TextEncoder('dowolnyTekst')" onclick="createEncoder('dowolnyTekst', 1)">
		</li>
	</ul>

	<p style="color: blue;">Szczegółowe informacje dla nowego obiektu TextEncoder:</p>
	<p id="info"></p>
</body>

</html>

Kolejny przykład testujący obsługę w wątkach roboczych:

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

	var worker_fn = function(e){

		var new_encoder = new TextEncoder();

		var result = "Interfejs kodera tekstowego: " + new_encoder
			+ "<br>" + "Właściwość encoding: " + new_encoder.encoding;

		self.postMessage(result);

	};

	var blob = new Blob(["onmessage = " + worker_fn.toString()], {type: "text/javascript"});
	var worker = new Worker(window.URL.createObjectURL(blob));

	worker.onmessage = function(e){
		document.write(e.data);
		document.close();
	};

	worker.postMessage("start");

</script>

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
[Constructor,
 Exposed=(Window,Worker)]
interface TextEncoder {
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

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