Полифил

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Полифил или Полифилл (англ. Polyfill) в веб-программировании это код, реализующий какую-либо функциональность, который не поддерживается в некоторых версиях веб-браузеров по умолчанию. Обычно представляет собой библиотеку JavaScript, которая реализует поддержку веб-стандарта HTML5 в версиях браузеров, где по умолчанию поддержка этих функций частично или полностью отсутствует. Это обеспечивает более-менее единообразное отображение веб-страниц в разных веб-браузерах[1].

Происхождение термина[править | править код]

Термин был придуман Реми Шарпом (англ. Remy Sharp) в 2009 году во время работы над книгой «Введение в HTML5», как подходящее слово, с которым можно ассоциировать моделирование API с использованием JavaScript (или Flash, либо чего-нибудь другого), для веб-браузера, у которого не предусмотрен таковой изначально.

«Poly-» (от греч. Polloi — много) говорит о привлечении любого числа технологий, то есть с поставленной задачей можно справиться не только посредством JavaScript, а вторая часть «-fill» (англ. fill — наполнять, заполнять) подразумевает заполнение той «дыры» браузера, в которой и должна находиться реализуемая таким образом технология.

Кроме того, в строительной отрасли известна шпаклёвка «Polyfilla». По мнению автора термина, ассоциация с заделыванием трещин и дыр в стенах вполне подходит для визуализации того, как полифилы в веб-программировании «ремонтируют» браузер[2].

Назначение[править | править код]

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

Примеры[править | править код]

HTML5 Shiv
Обеспечивает отображение элементов HTML5 в Internet Explorer 6-8, Safari 4.x, Firefox 3.x. и др. и позволяет оформлять их надлежащим образом с помощью CSS.
Flexie
Обеспечивает кросс-браузерную поддержку Flexible Box Module, которая позволяет верстать страницы со сложной компоновкой блоков быстрее, легче и удобней, чем с использованием плавающих элементов.
Webshims Lib
Библиотека, после подключения которой, при просмотре веб-страниц в браузере IE 9-й версии и ниже, начинают работать элементы форм HTML5 таких типов как date, range, color и другие.
Selectivizr
Используется для обработки CSS3 селекторов в IE 8-й версии и ниже в сочетании с JavaScript библиотеками, такими как jQuery или MooTools.
CSS3 PIE
PIE (Progressive Internet Explorer) реализует некоторые из наиболее популярных свойств CSS3 в веб-браузерах IE.
es5shim
Обеспечивает поддержку в старых браузерах IE практически всех функции, которые были утверждены в спецификации ECMAScript 5.
MediaElement.js
Обеспечивает поддержку во всех браузерах, в том числе мобильных, воспроизведение аудио- и видеоконтента. При использовании этого полифила, даже в тех браузерах, которые не понимают разметку HTML5, отображается альтернативный вариант плеера, использующий Flash.
FlashCanvas
Позволяет старым версиям Internet Explorer работать с Canvas (HTML). Один из немногих полифилов, который представлен, в том числе, расширенной платной версией.
Storage Polyfill
В старых версиях браузеров, где отсутствует поддержка Web Storage, позволяет сохранить функциональность, используя Cookie.

Примечания[править | править код]

  1. Modernizr Documentation. (англ.)
  2. Шарп, Реми What is a polyfill?. (англ.)

Ссылки[править | править код]