САЙТ НАХОДИТСЯ В РАЗРАБОТКЕ

HTML Учебник

HTML Главная HTML Введение HTML Редакторы HTML Основы HTML Элементы HTML Атрибуты HTML Заголовки HTML Параграфы HTML Стили HTML Форматирование HTML Цитаты HTML Комментарии HTML Цвета HTML CSS HTML Ссылки HTML Изображения HTML Таблицы HTML Списки HTML Блоки HTML Класс HTML Идентификатор HTML Фреймы HTML JavaScript HTML Пути к файлам HTML Head HTML Макеты HTML Адаптивность HTML Компьютерный код HTML Семантика HTML Объект HTML Символы HTML Emojis HTML Кодировка HTML URL кодирование HTML XHTML HTML Гид по стилю

HTML Формы

HTML Формы HTML Элементы формы HTML Тип ввода HTML Атрибуты ввода

HTML 5

HTML5 Введение HTML5 Поддержка HTML5 Новые элементы HTML5 Переход

HTML Графика

HTML Canvas HTML SVG

HTML Media

HTML Медиа HTML Видео HTML Аудио HTML Плагины HTML YouTube

HTML API

HTML Геолокация HTML Drag/Drop HTML Web хранилище HTML Web работник HTML SSE

HTML Примеры

HTML Примеры HTML Викторина HTML Упражнения HTML Резюме HTML Доступность

HTML Справочник

HTML Список тегов HTML Атрибуты HTML Глоб. атрибуты HTML События HTML Цвета HTML Canvas HTML Аудио/Видео HTML Набор символов HTML DOCTYPE HTML URL Кодирование HTML Коды языков HTML Коды стран HTTP Сообщений HTTP Метод PX в EM Конвертер Горячие клавиши
Баннер ТОП

HTML5 Web работники


Веб-работник - это JavaScript, который работает в фоновом режиме, не влияя на продуктивность страницы.


Что такое веб-работник на веб-странице?

Во время выполнения скриптов на странице HTML страница перестаёт отвечать, пока сценарий (выполнение скрипта) не закончится.

Веб-работник - это JavaScript, который работает в фоновом режиме, независимо от других скриптов, не влияя на продуктивность страницы. Вы можете продолжать делать всё, что хотите: нажимать, выбирая вещи и т.д., а веб-работник будет работать в фоновом режиме.


Поддержка браузерами

Цифры в таблице определяют первую версию браузера, которая полностью пподдерживает Web Workers (веб-работники).

API
Веб-работники 4.0 10.0 3.5 4.0 11.5

HTML Веб-работник. Пример

Приведённый ниже пример создаёт простого веб-работника, который подсчитывает числа в фоновом режиме:

Пример

Считать числа:

Попробуйте сами »

Проверьте поддержку Веб-работника

Перед тем, как создать веб-работника, проверьте, поддерживает ли его браузер пользователя:

if (typeof(Worker) !== "undefined") {
  // Да! Веб-работник поддерживается!
  // Какой-то код.....
} else {
  // Извините! Веб-работник не поддерживается..
}

Создать файл Веб-работника

Теперь давайте создадим нашего веб-работника во внешнем JavaScript файле.

Здесь мы создаём скрипт, который считает. Скрипт сохраняется в файле "demo_workers.js":

var i = 0;

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

timedCount();

Важной частью вышеуказанного кода является метод postMessage(), который используется для публикации сообщения на HTML-странице.

Примечание: Обычно веб-работники не используются для таких простых скриптов, а используются для более ресурсоёмких задач.


Создать объект Веб-работника

Теперь, когда у нас есть файл веб-работника, нам необходимо вызвать его с HTML-страницы.

Следующие строки проверяют, существует ли уже работник, если нет - он создаёт новый веб-объект и выполняет код в "demo_workers.js":

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

Потом мы можем отправлять и получать сообщение от веб-работника.

Добавьте к веб-работнику слушателя событий "onmessage".

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

Когда веб-работник отправляет сообщение, выполняется код в слушателе события. Данные веб-работника сохраняются в event.data.


Завершить работу Веб-работника

Когда объект веб-работника создан, он будет продолжать прослушивать сообщение (даже после завершения внешнего скрипта), пока он не будет завершен.

Для прекращения работы веб-работника и свободных ресурсов браузера/компьютера используйте метод terminate():

w.terminate();

Повторное использование Веб-работника

Если для рабочей переменной задано значение undefined, после её завершения вы можете повторно использовать код:

w = undefined;

Полный пример кода Веб-работника

Мы уже видели код Веб-работника в файле .js. Ниже приведён код для HTML-страницы:

Пример

<!DOCTYPE html>
<html>
<body>

<p>Считать числа: <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 = "К сожалению веб-работник не поддерживается.";
  }
}

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

</body>
</html>
Попробуйте сами »

Веб-работники и DOM

Поскольку веб-работники находятся во внешних файлах, они не имеют доступа к таким объектам JavaScript:

  • Объект окна
  • Объект документа
  • Родительский объект