Поліфіл
Поліфіл – це уривок коду (у Вебі зазвичай це JavaScript), що застосовується для додавання сучасної можливості в старі браузери, що не мають її нативної підтримки.
Наприклад, поліфіл може використовуватися для імітації можливості text-shadow
в IE7 за допомогою пропрієтарних фільтрів IE, або імітації одиниці вимірювання rem чи медійних засобів – засобами JavaScript, щоб динамічно припасовувати оформлення відповідним чином, або імітації ще якихось можливостей.
Причина того, що всі не користуються суто можливостями з поліфілів, полягає в особливостях цих можливостей і їхній швидкодії. Нативні реалізації API здатні на більше та є швидшими за поліфіли. Наприклад, поліфіл Object.create містить лише ті можливості, які можливо реалізувати при ненативній реалізації Object.create.
В інших випадках поліфіли використовуються для вирішення розбіжностей між реалізаціями одних і тих же можливостей в різних браузерах у різний спосіб. Поліфіли користуються нестандартними можливостями одного з браузерів, щоб дати JavaScript інтерфейс можливості, що відповідає стандартам. Попри те, що нині ця причина для додавання поліфілів зустрічається дуже рідко, вона переважала особливо в часи IE6 і Netscape, коли кожний браузер мав вельми особливу реалізацію JavaScript. Перша версія jQuery була раннім прикладом поліфілу. По суті це було зібрання вивертів для різних браузерів, щоб надати розробникам на JavaScript єдиний спільний API, що працював би у всіх браузерах. В ті часи розробники на JavaScript мали суттєві проблеми при намаганні змусити вебсайт працювати на різних пристроях, тому що між браузерами були такі розбіжності, що вебсайт міг потребувати радикально різного програмування та мати суттєво відмінний користувацький інтерфейс у різних браузерах. Таким чином, розробник на JavaScript мав доступ лишень до дрібної жмені API JavaScript, які працювали більш-менш стало в усіх браузерах. Використання поліфілів для роботи з особливостями різних браузерів нині менш поширене, тому що сучасні браузери здебільшого реалізують широкий набір API, відповідно до стандартних семантик.
Дивіться також
- Що таке поліфіл? (стаття Ремі Шарпа, автора терміну "поліфіл")