如何使用 Webshims Polyfill

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费信用额度!

以下是 Daniel Herken 的客座文章。 Daniel 是即将出版的书籍 跨浏览器手册 的作者。 他最近给我发邮件分享了这一点,并提出写一篇客座文章。 他对 Webshims Lib 感到兴奋——这是一种“万能”的 polyfill。 以下是这篇客座文章,介绍了该库及其基本用法。

在这篇文章中,我将讨论名为 Webshims Lib 的 HTML5 和 CSS3 功能 polyfill 库,以及如何正确使用它。

Polyfill?

在 Web 开发中,我们将模拟 HTML5 或 CSS3 规范部分的脚本称为“polyfill”。 Polyfill 可以是任何东西——一个 JavaScript 库,它为旧版本的 Internet Explorer 添加了对 CSS3 选择器的支持(例如 Selectivizr)或一个高端基于 Flash 的解决方案,它可以启用 <audio><video> 标签,一直回溯到 IE 6(例如 html5media)。

介绍 Webshims

Webshims Lib 是最完整的 polyfill 之一。 它基于 jQueryModernizr。 包含这 一个 脚本将启用各种台式机浏览器中的许多功能。

Webshims 使得 HTML5 和 CSS3 功能成为可能,例如语义标记、画布、Web 存储、地理定位、表单和多媒体。 仔细阅读这个大列表后,您首先想到的可能是这个库有多大。 这意味着巨大的下载大小和漫长的脚本执行时间。 但是,这里有一个关键点,Webshims 将自动检测用户浏览器支持哪些功能,并且它只加载模拟所有其他功能所需的功能。 这样,它不会减慢那些已经运行现代浏览器的用户的速度,比如 Firefox 或 Chrome。 即使您不需要所有功能,您也可以减少要加载的功能数量。

如何使用 Webshims

要使用 Webshims 库,您需要将依赖项 jQuery 和 Modernizr 与 Webshims Lib 一起包含。

<script src="scripts/jquery-1.8.2.min.js"></script>
<script src="scripts/modernizr-custom.js"></script>
<script src="scripts/webshim/polyfiller.js"></script>

现在您需要初始化 Webshims,并且如果需要,告诉它要使用哪些功能。

<script>
    // Polyfill all unsupported features
    $.webshims.polyfill();	
</script>
<script>
    // Polyfill only form and canvas features
    $.webshims.polyfill('forms canvas');	
</script>

就是这样! Webshims 将根据用户的浏览器自动检测和 polyfill 缺少的功能。 如果您好奇,完整的功能列表是

  • json-storage
  • es5
  • geolocation
  • canvas
  • forms
  • forms-ext
  • mediaelement
  • track
  • details

例子

让我们使用 <video> 标签来举例。 首先,让我们在没有 Webshims 或任何其他 polyfill 的情况下创建基本页面。

<!DOCTYPE html>
<html>
<head>
  <title>Video native</title>
</head>
<body>
  <video width="480" height="360" controls="controls">
    <source src="Video.mp4" type="video/mp4">
    <source src="Video.webm" type="video/webm">	
  </video>
</body>
</html>

现代浏览器将正确显示此视频,但 Internet Explorer 6、7 或 8 不会。
现在,我们将示例更改为嵌入 Webshims Lib。 您会发现无需编辑任何其他内容。

<!DOCTYPE html>
<html>
<head>
  <title>Video including polyfill</title>
  <script src="scripts/jquery-1.8.2.min.js"></script>
  <script src="scripts/modernizr-custom.js"></script>
  <script src="scripts/webshim/polyfiller.js"></script>
  <script>
    $.webshims.polyfill('mediaelement');
  </script>
</head>
<body>
  <video width="480" height="360" controls="controls">
    <source src="Video.mp4" type="video/mp4">
    <source src="Video.webm" type="video/webm">	
  </video>
</body>
</html>

现代浏览器将显示其本机 <video> 标签播放器,但现在此功能在 Internet Explorer 6+ 中也可用。 您可以在 此处尝试演示

结论

如示例所示,使用 Webshims Lib 非常简单。 无需修改代码,也不会降低使用现代浏览器的用户的速度。 它使每个人都能享用您页面提供的全部功能。 请访问 Webshims 主页 以获取下载、文档和更多演示。