2013-05-18; test1

2. Выделение найденных слов

Задача. На странице имеется поле ввода (поиска) и текст с разметкой. По мере ввода слов в поисковое поле необходимо подсвечивать найденные слова в тексте. Вывести количество совпадений. Реализовать на чистом JavaScript без использования innerHTML.
Обоснование. Решение даёт полезный инструмент выделения слов в текстах.

Подсветка введённых слов

(все слова состоят из русских или латинских букв)
Совпадений:
Из-за разметок заполнение работает медленнее раз в 5. И подсветки тоже небыстры. Поэтому делаем 2 тыс. русских записей и 200 латинских, чтобы получить сопоставимое с первым тестом время выполнения.

Поскольку используется каркас первого теста и совершенно очевидно, как удалять jQuery/Zepto из кода, работа с селекторами оставлена неизменной - через библиотеки. Ядро же решения задачи сделано, как требуется, на чистом JS.

Из-за большого массива случайных слов наблюдение результатов будет не так наглядно, как хотелось бы. Поэтому в первую задачу перенесена техника подсветки, разработанная в этой задаче. При удалении неподсвеченных строк выделения отображаются компактно и наглядно.

Из-за проблем работы границ слов (\b) с кириллицей оригинальный алгоритм переделан под работающий на основе другого регулярного выражения.

На процессоре e7200 время выставления подсветок в браузерах:
Chrome 25 - 2000 за секунду;
Firefox 20 - 100 за секунду;
Opera 12 - 300;
IE8 - 400 подсветок за секунду.
Это - данные о скорости перерисовок нод.
Вернуться к 1-му тесту.

Общие замечания