我们入门JavaScript的时候都写过polyfill: 比如手写一个弹窗, 手动模拟实现一个表格, 这些魔力的对象都是浏览器原生支持的, 虽然当我成为JS专家之后再也没造过轮子, 但是最近才发现我们之前写的那么多轮子其实都叫polyfill: 其实就是为了那些没有实现原生功能的浏览器服务的, (主要是IE) 相信没有IE浏览器的话也许就不存在polyfilll这个专业名词了.......

polyfill或polyfiller是一段代码(或插件),它提供了开发人员期望浏览器本机提供的技术。如果愿意,可以展平API环境。

What the Hack is Polyfill ??

polyfill来自/创造该术语的地方

我坐在咖啡店(就像你一样)以为我想要一个单词,意思是“如果浏览器没有它,则使用JavaScript(或Flash或其他)复制API原生地”。

对我来说,Shim意味着你可以添加的一段代码可以修复某些功能,但它通常会拥有自己的API。我想要一些你可以投入的东西,它会默默地工作(记住旧的shim.gif?需要你实际插入图像来修复空td单元格 - 我想要一些能自动完成这项工作的东西)。

我知道我所追求的不是渐进增强,因为我正在努力的基线需要JavaScript和最新技术。所以现有的术语对我不起作用。

我也知道这不是优雅的降级,因为没有原生功能而没有JavaScript(假设你的polyfill使用JavaScript),它根本不起作用。

所以我想要一个简单易懂的词,并且可以想象出这件事会做什么的模糊概念。Polyfill只是来找我,但它符合我的要求。Poly意味着它可以使用任何数量的技术来解决 - 它不仅限于使用JavaScript完成,填充将填补浏览器所需技术的漏洞。它也没有暗示“旧浏览器”(因为我们也需要填充新的浏览器)。

同样对我来说,Polyfilla产品(在美国腻子)是一种糊状物,可以放入墙壁以覆盖裂缝和孔洞。我真的很喜欢可视化我们如何修复浏览器的想法。一旦墙壁平坦,您可以根据自己的喜好进行绘画,或者根据您的心脏内容进行壁纸处理。

我得到了一些反馈意见“应该改变这个词”,但更多的是当时的社区需要一个词,比如我们需要Ajax,HTML5,Web 2.0 - 这就是我们的想法。无论这个词是否完美契合,它都证明它有腿,开发人员和设计师理解这些概念。

我故意从来没有把这个术语推到那里,我只是将它放在几个关键的地方(最值得注意的是书),我认为这是+保罗爱尔兰人在几个月后(很多?)发表演讲时直接引用术语polyfill ,当这个术语确实得到了大量的曝光时(我认为这也有助于添加Modernizr HTML5垫片和polyfill页面)。

定义

模拟未来API的垫片,为旧版浏览器提供后备功能。

一些例子

这是一个例子:sessionStorage在所有最新的浏览器(IE8及更高版本)中都可用,但不在IE7及更低版本中。

polyfill可用于插入对未提供的旧浏览器的支持sessionStorage

现在有了polyfiller,作为开发人员,我可以依赖于使用Web Storage API(用于会话),而不必在我的代码或fork中进行测试以处理不同的情况。

另一个例子是在IE中提供画布支持。这实际上是可以看到聚合物部分的地方。如果没有本机画布,我们可以使用Silverlight提供画布支持。如果Silverlight不可用,我们可以使用excanvas下拉到使用VML (请注意,excanvas实际上也包含一个Silverlight桥,我希望它首先尝试它)。使用这两个脚本为开发人员提供(相当)可靠的画布备份,如果它不是浏览器中的本机。

来自哪里以及它的去向

在研发期间,我一直在寻找填充缺失API的垫片和技术,但它们并不是非常渐进的增强。我想要一个代表这个想法的单词,有一个“东西”可以插入浏览器,但不是渐进式增强,但也不是优雅的降级。

Polyfilling似乎符合我的想法(在我脑海中!)。

Ployfilla是一种英国产品,在美国被称为Spackling Paste。考虑到这一点:将浏览器视为一个有裂缝的墙。这些polyfills有助于消除裂缝,并为我们提供一个漂亮的光滑墙壁浏览器。

最近在JS ConfPaul Irish发布了一个polyfill和shims列表 - 一个很棒的资源列表,可以让开发人员免受旧浏览器的痛苦。

看起来polyfilling有一些腿,所以让我们开始使用它们,并拖动旧的(甚至更新的)浏览器达到我们的期望。

polyfill是一个历史产品, 在前端框架日新月异的时代, 很少有人在造轮子, 浏览器的标准库也是日新月异, Github等知名网站已经宣布放弃IE浏览器 ,这咋额养一个环境下, 我们很少在讨论polyfill, 阅后即瞎吧~

浏览器向下兼容之polyfill[阅后即瞎]的更多相关文章

  1. 26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面

    转自:https://blog.csdn.net/yuxxz/article/details/51318908 使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及 ...

  2. 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

    原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...

  3. 【转】当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

    http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/panx ...

  4. asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)

    从今天开始我将抽出空闲时间复习asp.net相关知识.此篇博文只是为了记录学习当中的知识点和感觉到比较重要的知识点. 本人才疏学浅,如有遗漏或者错误希望广大博友尽情拍砖.我会在后续中进行更正. 这个问 ...

  5. 当在浏览器地址栏里输入URL后会发生什么事情

    其实这个很多大神已经说的很多了.但是为了自己更好的理解,在自己所接触的层面上,重新对自己讲解一下.当然,这是站在一个前端开发者的角度上来看问题的. 说说一次HTTP完整事务的过程 输入URL 浏览器从 ...

  6. 网易笔试题:浏览器中输入一个url后回车到返回页面信息的过程

    You enter a URL into the browser输入一个url地址 The browser looks up the IP address for the domain name浏览器 ...

  7. 浏览器输入URL按回车后都经历了什么?

    在浏览器上输入一个URL,按回车后,这个过程发生了什么? 1.首先,浏览器地址栏输入了URL,先解析URL,检测URL地址是否合法 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直 ...

  8. 在浏览器中输入一个URL后都发生了什么

    这道题目没有所谓的完全的正确答案,这个题目可以让你在任意的一个点深入下去, 只要你对这个点是熟悉的.以下是一个大概流程: 浏览器向DNS服务器查找输入URL对应的IP地址. DNS服务器返回网站的IP ...

  9. 在IE、fixfox、chrome等浏览器中ajax提交成功后,打开新标签页面被浏览器拦截问题[转]

    如题: 在项目中要在当前页面中,再新开一个页面, 新开页面的地址是ajax请求后返回的url --------- 试了,浏览器提示组织弹窗..... 网上找,找到了一个处理方式,思路是 1. 先打开一 ...

随机推荐

  1. evernote如何笔记共享

    首先将你的笔记共享     访问你的共享笔记地址,就可看到共享笔记的内容了 https://www.evernote.com/pub/用户名/笔记名 https://www.evernote.com/ ...

  2. Python学习笔记010——匿名函数lambda

    1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要r ...

  3. GL_总账完整会计周期业务(流程)

    2014-06-02 BaoXinjian

  4. android使用JsonWriter拼json字符串

    JsonWriter使用 Example: 拼一个如下的json格式String {    [        {            "id": 912345678901,    ...

  5. Linux中断 - ARM中断处理过程

    一.前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作.具体整个处理过程分成三个步骤来描述: 1.第二章描述了中断处理的准备过程 2.第三章描述了当发生中的时候 ...

  6. C语言07指针高级

    01内存四区 接口封装和设计思想引导 接口封装设计思想引导 Sckclient客户端api模型设计 第一套api函数 #ifndef _SCK_CLINT_H_ #define _SCK_CLINT_ ...

  7. shell学习四十八天----文件校验和匹配

    文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校 ...

  8. Git教程Git多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  9. HDU 2256 Problem of Precision(矩阵高速幂)

    题目地址:HDU 2256 思路: (sqrt(2)+sqrt(3))^2*n=(5+2*sqrt(6))^n; 这时要注意到(5+2*sqrt(6))^n总能够表示成an+bn*sqrt(6); a ...

  10. C语言 函数参数不确定时 需要用到va_start和va_end函数

    1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...);void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我 ...