现在HTML5:通过Polyfills获得更多

这是一篇介绍HTML5的文章 。
原文链接:HTML5 Now: Getting More Through Polyfills

现在HTML5:通过Polyfills获得更多

戴夫沃德 | 2012年5月17日

利用 HTML5 来搭建网站和应用可能是一项艰巨的任务。尽管现在越来越多的现代浏览器正在更多的支持Html5新特性,但实际上只有很少部分人能够幸运的只需要为这些最新的浏览器编写代码。作为一个专业的开发者,你必须要花很多精力来调整不自由的空间排版和实现承诺过的特性以及面对现在的现实情况,这些都是因为浏览器的碎片化。好消息是 IE 9 和 10 都已经支持HTML5 了,用户可以抛弃旧版的 Internet Explorer 浏览器了,不过对于开发者而言他们还需要考虑支持旧版的浏览器。

但是,这并不意味着您不得不放弃在短期内支持HTML5。就像网站有技巧支持多种屏幕尺寸和不同级别的CSS功能之类的差异一样,也可以实现令人惊讶的强大的跨浏览器HTML5支持。尽管较旧的浏览器缺少许多HTML5的新API,但JavaScript是一种非常灵活的语言,并且提供了追溯性地添加新功能的机会,当它们不是本地存在时。

跨浏览器支持

跳跃到HTML5最让人头痛的问题是,我们大多数人别无选择,只能支持各种对最有用的新API几乎或不支持的旧浏览器。采用新的Web技术的想法让人联想到了跨浏览器不一致性,不可维护的分支代码,浏览器嗅探以及其他一系列问题的恶梦。但是,有一项评估不足的技术可以完全缓解HTML5某些新功能的这些问题,并且仍然允许您针对新的API进行开发,就好像您的所有用户在一夜之间都升级了浏览器:polyfills。

Polyfilling是Remy Sharp创造的一个术语,用于描述以重复缺失API的方式回填缺失功能的方法。使用这种技术,您可以编写特定于应用程序的代码,而不用担心每个用户的浏览器是否本机实现它。事实上,polyfills不是一种新技术,也不是绑定到HTML5。多年来,我们一直在使用诸如json2.js,ie7-js之类的polyfills,以及在Internet Explorer中提供透明PNG支持的各种回退。不同之处在于去年HTML5 polyfills的扩散。

什么使Polyfill?

有关我正在谈论的具体示例,请查看json2.js。具体来说,这是JSON.parse实现中的第一行代码:

if(typeof JSON.parse!== 'function'){
   // Crockford的JSON.parse的JavaScript实现
}

image.gif

通过使用typeof测试守护代码,如果浏览器具有JSON.parse的本机实现,则json2.js不会试图干扰或重新定义它。如果本机API不可用,那么json2.js将以与JavaScript本机JSON API完全兼容的方式实现JSON.parse的JavaScript版本。最终,这意味着您可以在页面中包含json2.js,并且有信心使用JSON.parse,而不考虑您的代码运行在哪个浏览器中。

这显示了polyfilling方法的优点 - 不仅提供了兼容性层,还提供了一种试图密切反映polyfill实现的标准API的方式。因此,没有一个站点特定的代码需要知道或关心兼容层的存在。最终,这会产生更干净,更简单的特定于应用程序的代码,可让您利用新的API,同时仍保持与旧版浏览器的兼容性。

HTML5的新语义元素

HTML5 中对于polyfil来说最简单的特性就是设置已经增加了的语义元素,如

你可能感兴趣的:(现在HTML5:通过Polyfills获得更多)