膩子指令碼,膩子
膩子指令碼(polyfill)指的是一段JavaScript代碼,能夠賦予瀏覽器未曾有過的功能。目前,幾乎所有CSS3和HTML5功能都有各自對應的膩子指令碼,包括視頻回放和陰影,從而讓那些老得走不動道兒的“老傢伙”們也能閃現青春的光芒。
Paul Irish維護了一個完整的膩子指令碼的列表,地址是:https://github.com/modernizr/modernizr/wiki/html5-cross-browserpolyfills
要在頁面中添加一段膩子指令碼,首先要下載並將其儲存在網站的一個檔案夾中。我為此建立了一個helpers檔案夾。然後,在頁面<head>標籤中添加一個
<script type="text/javascript" src="helpers/selectivizr.js"></script>
怎麼確定是否需要某個膩子指令碼呢?推薦大家使用Modernizr。
Modernizr(http://modernizr.com)是一個JavaScript檔案,能夠幫你檢測使用者瀏覽器對HTML5和CSS3功能的支援情況,然後為頂級的<html>標籤添加一組類,標明瀏覽器支援什麼功能。另外,它還會設定一個JavaScript對象modernizr 的屬性,以便你通過JavaScript來測試這些功能。Modernizr添加的類主要是為CSS提供便利。
html5shiv.js(http://code.google.com/p/html5shiv):讓IE8及更低版本的IE識別section、 article、nav等HTML5元素。selectivizr(http://www.selectivizr.com):讓IE(6/7/8)支援::firstchild等進階CSS選擇符。IE9.js(http://code.google.com/p/ie7-js):修複從IE6到IE9的很多bug和缺損功能。CSS3Pie(http://css3pie.com):讓IE6到IE9支援圓角、背景漸層、邊框圖片、盒陰影、RGBa顏色等可視化的CSS3功能。Respond.js(https://github.com/scottjehl/respond)讓舊版本瀏覽器支援媒體查詢。-prefix-free(http://lea.verou.me/projects)為需要廠商首碼的CSS3聲明添加首碼(參見第4章)。borderBoxModel.js(https://github.com/albertogasparin/borderBoxModel):讓IE6和IE7支援CSS3的box-sizing屬性。