HTML tutoriál

HOME HTML Úvod do HTML HTML editory HTML Basic HTML prvky Atributy HTML HTML nadpisy HTML odstavce HTML styly Formátování HTML HTML citace HTML komentáře HTML barvy HTML CSS HTML odkazy HTML obrázky HTML favicon HTML tabulky HTML seznamy HTML Block & Inline HTML třídy ID HTML HTML iframe HTML JavaScript Cesty souboru HTML HTML hlava Rozložení HTML HTML responzivní Počítačový kód HTML Sémantika HTML Průvodce stylem HTML HTML entity HTML symboly HTML Emojis Znaková sada HTML HTML kódování URL HTML vs. XHTML

HTML formuláře

HTML formuláře Atributy formuláře HTML HTML prvky formuláře Typy vstupu HTML Vstupní atributy HTML Atributy vstupního formuláře HTML

HTML grafika

HTML plátno HTML SVG

HTML média

HTML média HTML video Zvuk HTML HTML pluginy HTML YouTube

HTML API

Geolokace HTML HTML Drag/Drop Webové úložiště HTML HTML Web Workers HTML SSE

Příklady HTML

Příklady HTML HTML kvíz HTML cvičení HTML certifikát HTML souhrn Přístupnost HTML

HTML reference

Seznam značek HTML Atributy HTML Globální atributy HTML Podpora HTML prohlížeče HTML události HTML barvy HTML plátno HTML Audio/Video HTML Doctypes HTML znakové sady HTML kódování URL HTML jazykové kódy Zprávy HTTP HTTP metody Převodník PX na EM Klávesové zkratky

HTML Web Workers API


Webový pracovník je JavaScript běžící na pozadí, aniž by to ovlivnilo výkon stránky.


Co je Web Worker?

Při provádění skriptů na stránce HTML stránka přestane reagovat, dokud není skript dokončen.

Webový pracovník je JavaScript, který běží na pozadí, nezávisle na jiných skriptech, aniž by to ovlivnilo výkon stránky. Můžete pokračovat v tom, co chcete: klikat, vybírat věci atd., zatímco webový pracovník běží na pozadí.


Podpora prohlížeče

Čísla v tabulce určují první verzi prohlížeče, která plně podporuje Web Workers.

API
Web Workers 4.0 10.0 3.5 4.0 11.5

Příklad HTML Web Workers

Níže uvedený příklad vytváří jednoduchého webového pracovníka, který počítá čísla na pozadí:

Příklad

Count numbers:


Zkontrolujte Web Worker Support

Před vytvořením webového pracovníka zkontrolujte, zda jej prohlížeč uživatele podporuje:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Vytvořte soubor Web Worker

Nyní vytvoříme našeho webového pracovníka v externím JavaScriptu.

Zde vytvoříme skript, který se počítá. Skript je uložen v souboru "demo_workers.js":

var i = 0;

function timedCount() {
  i = i + 1;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

Důležitou součástí výše uvedeného kódu je postMessage()metoda - která se používá k odeslání zprávy zpět na stránku HTML.

Poznámka: Obvykle se weboví pracovníci nepoužívají pro takové jednoduché skripty, ale pro úlohy náročnější na CPU.


Vytvořte objekt Web Worker

Nyní, když máme soubor webového pracovníka, musíme jej zavolat ze stránky HTML.

Následující řádky zkontrolují, zda pracovník již existuje, pokud ne - vytvoří nový objekt webového pracovníka a spustí kód v "demo_workers.js":

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Poté můžeme odesílat a přijímat zprávy od webového pracovníka.

Přidejte do webového pracovníka posluchače událostí „onmessage“.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Když webový pracovník odešle zprávu, spustí se kód v posluchači událostí. Data od webového pracovníka jsou uložena v event.data.


Ukončit Web Worker

Když je vytvořen objekt webového pracovníka, bude nadále naslouchat zprávám (i po dokončení externího skriptu), dokud nebude ukončen.

Chcete-li ukončit webového pracovníka a uvolnit prostředky prohlížeče/počítače, použijte terminate()metodu:

w.terminate();

Znovu použijte Web Worker

Pokud nastavíte pracovní proměnnou na undefined, po jejím ukončení můžete kód znovu použít:

w = undefined;

Ukázkový kód úplného webového pracovníka

Kód Worker jsme již viděli v souboru .js. Níže je uveden kód HTML stránky:

Příklad

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
var w;

function startWorker() {
  if (typeof(Worker) !== "undefined") {
    if (typeof(w) == "undefined") {
      w = new Worker("demo_workers.js");
    }
    w.onmessage = function(event) {
      document.getElementById("result").innerHTML = event.data;
    };
  } else {
    document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
  }
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Web Workers a DOM

Protože weboví pracovníci jsou v externích souborech, nemají přístup k následujícím objektům JavaScriptu:

  • Objekt okna
  • Objekt dokumentu
  • Nadřazený objekt