Что означает полифиллы в HTML5? - PullRequest
363 голосов
/ 17 августа 2011

Что означает полифиллы в HTML5? Я видел это слово на многих сайтах о HTML5, например HTML5-Cross-Browser-Polyfills.

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

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

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

А в чем разница между прокладками, откатами и полифиллами?

Ответы [ 4 ]

353 голосов
/ 17 августа 2011

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

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

Вотхороший пост:

http://remysharp.com/2010/10/08/what-is-a-polyfill/

Вот полный список полифилов и прокладок:

https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

59 голосов
/ 17 сентября 2013

Прежде всего давайте выясним, чем не является полифил: полифил не является частью стандарта HTML5.Кроме того, полизаполнение не ограничивается Javascript, даже если вы часто видите, что полифилсы упоминаются в этих контекстах.

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

Источник и пример полизаполнения здесь:

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

26 голосов
/ 10 июня 2016

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

14 голосов
/ 06 декабря 2016

Полифилл - это прокладка, которая заменяет первоначальный вызов на вызов прокладки.

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

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

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

Например:

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

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

Тот, на кого он заменил его, это прокладка. Он обнаружит, поддерживается ли эта функция изначально, и использует ее, если она есть, или будет обходить ее, используя другие API, если это не так.

Таким образом, полифилл - это своего рода «прозрачная» прокладка. И это то, что имел в виду Реми Шарп (который придумал этот термин), когда говорил: « если вы удалите скрипт полизаполнения, ваш код продолжит работать без каких-либо изменений, несмотря на удаление полифилла ».

...