= Сообщение: 2266 из 2655 ================================== RU.BLOG.MITHGOL = От : Mithgol the Webmaster 2:50/88 20 Aug 17 21:50:56 Кому : All 20 Aug 17 21:50:56 Тема : Очередная веха эволюции браузеров в 2017 году: Intersection Observer FGHI : area://RU.BLOG.MITHGOL?msgid=2:50/88+5999da1d = Кодировка сообщения определена как: CP866 ================================== ==============================================================================
Эволюция браузеров в 2017 году, безусловно, идёт гораздо менее быстрыми шагами по сравнению со временами &+AKs-;браузерных войн&+ALs-; девяностых годов или временами первоначального развития мобильных браузеров в двухтысячных.
Но, несмотря на это, эволюция браузеров не остановилась, и в 2017 году одним из наиболее впечатляющих её результатов является программный интерфейс (API), известный как Intersection Observer (в переводе с английского языка ── средство наблюдения за пересечениями).
Это новое средство сильно упрощает реагирование сайта на события, связанные с появлением того или иного элемента в поле видимости ── события, которые геометрически обуславливаются пересечением прямоугольника видимой части страницы, отображаемой в окошке браузера, с прямоугольником некоторого элемента страницы (именно поэтому такое название у API, наблюдающего за пересечениями).
Раньше такое реагирование обеспечивали, сочиняя довольно сложные библиотечные функции, занимающиеся сбором событий типа scroll (прокрутка страницы) и заодно resize (изменение размеров окна), после чего самостоятельно вычислявшие координаты переменившегося положения того и другого прямоугольника с целью выяснения того, пересеклись прямоугольники или не пересеклись.
[Статья о появлении поддержки Intersection Observer во браузере Mozilla Firefox ](https://hacks.mozilla.org/2017/08/intersection-observer-comes-to-firefox/) упоминает также и о том, что некоторые создатели коммерческих элементов сайта (например, баннеров) стремились оградить свои коммерческие интересы (в случае баннеров ── не платить за непоказанные баннеры) ещё более сложными трюками, нацеленными за измерение видимости (например, формированием прозрачных однопиксельных флэшёвых видеозаписей с последующим подсчётом частоты кадров).
Ото всего этого страница, во-первых, подтормаживала (потому что по мере прокрутки, кроме отрисовывания страницы, браузер также запускал скрипты перевычисления положения элементов, а не то и отображал видеозаписи), а во-вторых, у мобильных устройств ещё и отжирала электричество из аккумулятора (как и всякая вычислительно непростая задача).
Отрасль браузеростроения пришла в итоге к тому, что вопрос видимости элемента может отслеживать сам браузер (и быстрее, и энергоэффективнее), тогда как скрипты на сайте могут (в подавляющем большинстве случаев) удовольствоваться, вместо прежних частых низкоуровневых событий scroll и resize, новыми редкими высокоуровневыми событиями двух типов (&+AKs-;элемент появился&+ALs-; и &+AKs-;элемент скрылся&+ALs-;), которые к тому же поддаваться будут настройке для альтернативных ответов на некоторые ключевые вопросы:
*) Появился где? ── в поле зрения читателя сайта? В пределах некоторого родительского элемента?
*) Появился в какой мере? ── хотя бы на пиксел? На заданное число процентов? Целиком?
*) Не увеличить ли (или уменьшить) отслеживаемый прямоугольник элемента относительно реального? В какой мере и с какой стороны?
[На сайте MDN ](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) можно ознакомиться с техническими подробностями нового API. Для рядового читателя сайтов наиболее интересен будет там список тех версий браузеров, начиная от которых они начали поддержку этого нового и полезного API; вот они:
Предприимчивые люди изготовили такой [polyfill ](https://github.com/WICG/IntersectionObserver/tree/gh-pages/polyfill) (то есть костыль, если говорить русским техническим жаргоном), который обеспечивает аналогичный интерфейс (разумеется, и более тормознуто, и с меньшими возможностями ── но API тот же самый, чтобы новый код мог работать) и в нескольких более ранних браузерах: во всех версиях Chrome, во всех версиях Firefox, в Safari от версии 6, во всех версиях Edge, во всех версиях Opera, в Internet Explorer от версии 7, во браузерах системы Android версии 4.4 и новее.
* изначально написано в эхоконференцию Ru.Blog.Mithgol * также было отослано в эхоконференцию Ru.Mozilla
Фидонет будет великим и гипертекстовым! [Ru.Mozilla] http://Mithgol.Ru/ Mithgol the Webmaster. [Братство Нод] [Team А я меняю subj]
... С М. Ю. Лермонтовым я познакомилась в детском саду. (школьное сочинение) --- Эшелону: подразделения Delta и SEAL виртуально WASS WID Dolch secure shell * Origin: Помните ли?! ── в уголке сидело человек десять вьетнамцев (2:50/88)