Что означает polyfills в HTML5?

Что означает polyfills в HTML5? Я видел это слово на многих сайтах о HTML5, например,HTML5-Кросс-браузер-поля.

Итак, здесь мы собираем все прокладки, резервные и полифиллы чтобы имплантировать функциональность HTML5 в браузеры, которые не поддерживает их.

Я на самом деле не понял, что означает polyfills.

Это новый метод HTML5 или библиотека JavaScript? Я никогда слышал это слово до HTML5.

и в чем разница между прокладками, резервными и многополюсниками?

4 ответов


polyfill-это резервный браузер, выполненный в JavaScript, который позволяет функциональности, которую вы ожидаете работать в современных браузерах, работать в старых браузерах, например, для поддержки canvas (функция HTML5) в старых браузерах.

Это своего рода метод HTML5, так как он используется в сочетании с HTML5, но он не является частью HTML5, и вы можете иметь polyfills без HTML5 (например, для поддержки методов CSS3, которые вы хотите).


во-первых, давайте проясним, что такое polyfil: polyfill не является частью стандарта HTML5. Также polyfill не ограничивается Javascript, хотя вы часто видите, что polyfills упоминается в этих контекстах.

сам термин polyfill относится к некоторому коду, который "позволяет вам иметь определенную функциональность, которую вы ожидаете в текущих или "современных" браузерах, чтобы также работать в других браузерах, которые не имеют поддержки этой функции, встроенной. "

источник и пример polyfill здесь:

http://www.programmerinterview.com/index.php/html5/html5-polyfill/


polyfill-это фрагмент кода (или плагин), который предоставляет технологию, которую вы, разработчик, ожидаете от браузера.


полифилл-это прокладка, которая заменяет исходный вызов с вызовом на прокладку.

например, скажем, вы хотите использовать навигатор.mediaDevices объект, но не все браузеры поддерживают это. Вы можете представить себе библиотеку, которая предоставляет прокладку, которую вы можете использовать следующим образом:

<script src="js/MediaShim.js"></script>
<script>
    MediaShim.mediaDevices.getUserMedia(...);
</script>

в этом случае вы явно вызываете прокладку вместо использования исходного объекта или метода. С другой стороны, polyfill заменяет объекты и методы на исходный объект.

например:

<script src="js/adapter.js"></script>
<script>
    navigator.mediaDevices.getUserMedia(...);
</script>

в вашем коде это выглядит так, как будто вы используете стандартный навигатор.объект mediaDevices. Но на самом деле, polyfill (адаптер.js в Примере) заменил этот объект своим собственным.

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

таким образом, polyfill является своего рода" прозрачная " прокладка. Вот что имел в виду Реми Шарп (придумавший этот термин), говоря:"Если вы удалили скрипт polyfill, ваш код будет продолжать работать без каких-либо изменений, необходимых, несмотря на удаление polyfill".