2011-08-17 62 views
276

polyfills在HTML5中的含義是什麼?我在很多關於HTML5的網站中看到了這個詞,例如HTML5-Cross-Browser-Polyfills.HTML5中polyfills的含義是什麼?

所以在這裏我們收集所有的墊片,回退,並polyfills 爲了在不 原本支持的瀏覽器植入HTML5功能。

我其實不明白polyfills是什麼意思。

它是一種新的HTML5技術或JavaScript庫嗎?在HTML5之前我從未聽過這個詞。

墊片,後備和polyfills有什麼區別?

+1

您可以檢查以獲得更好的理解http://blogs.msdn.com/b/jennifer/archive/2011/08/04/html5-part-4-using-html5-while-retaining-support-for-older -browsers.aspx – 2014-03-10 06:54:11

+0

@ user3400622感謝您的鏈接,鏈接中的解釋非常清晰。 –

回答

278

一個填充工具是一個瀏覽器後退,在JavaScript中提出,允許你希望在現代瀏覽器工作在舊的瀏覽器,例如,合作,以支持畫布(HTML5的功能),在舊的瀏覽器功能。因爲它與HTML5一起使用,但它不是HTML5的一部分,並且您可以在沒有HTML5的情況下使用polyfills(例如,以支持所需的CSS3技術)。這是一種HTML5技術。

這裏有一個很好的職位:

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

這裏的Polyfills和墊片的完整列表:

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

+4

所以這意味着ie7.js也是一個polyfill –

+1

是的:「許多修復包括PNG透明度,CSS樣式/選擇器,渲染錯誤修復等。」它通過瀏覽器不支持的javascript添加了這個功能。 –

+1

我認爲在HTML5之後出現了Polyfills這個詞。 Shim與Polyfills不同嗎? –

43

首先,讓我們澄清polyfil是不是有什麼:一個填充工具不屬於HTML5標準的一部分。即使您經常看到polyfill在這些情況下被引用,也不是限於Javascript的polyfill。

術語polyfill本身是指「允許您在當前或」現代「瀏覽器中具有某些特定功能的代碼,以便在其他不支持該功能的瀏覽器中也可以使用。」填充工具的

源和例如這裏:

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

11

甲填充工具是一段代碼(或插件),提供了技術,你,顯影劑,期望瀏覽器本地地提供。

+0

很好解釋。 –

11

一個填充是一個墊片,其中替換原來的電話與墊片的電話。

例如,假設您想使用navigator.mediaDevices對象,但並非所有瀏覽器都支持這一點。你可以想像,提供了一個墊片,你可能會使用這樣的庫:

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

在這種情況下,你是顯式調用一個墊片,而不是使用原始對象或方法。另一方面,polyfill將替換原始對象上的對象和方法。

例如:

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

在你的代碼,它看起來好像你正在使用的標準navigator.mediaDevices對象。但實際上,polyfill(示例中的adapter.js)用它自己的替換了這個對象。

它取代它的那個是墊片。這將檢測該功能是否本機支持,如果是,則會使用該功能,否則將使用其他API(如果沒有)使用該功能。

所以polyfill是一種「透明」的墊片。這就是Remy Sharp(誰創造了這個詞),意思是「如果你刪除了polyfill腳本,你的代碼將繼續工作,不需要進行任何更改,儘管刪除了polyfill」。

+2

什麼是墊片? –

+0

@Oliver Watkins如果您熟悉適配器模式,那麼您知道墊片是什麼。 Shims攔截API調用並在調用者和目標之間創建一個抽象層。典型的墊片用於向後兼容 –