Polyfill简介

Wesley13
• 阅读 532

1.什么是Polyfill?
Polyfill是一个js库,主要抚平不同浏览器之间对js实现的差异。比如,html5的storage(session,local), 不同浏览器,不同版本,有些支持,有些不支持。Polyfill(Polyfill有很多,在GitHub上https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills),帮你把这些差异化抹平,不支持的变得支持了(典型做法是在IE浏览器中增加 window.XMLHttpRequest ,内部实现使用 ActiveXObject。)

提到Polyfill,不得不提shim,polyfill 是 shim的一种。 
shim是将不同 api封装成一种,比如 jQuery的 $.ajax 封装了 XMLHttpRequest和 IE用ActiveXObject方式创建xhr对象。它将一个新的API引入到一个旧的环境中,而且仅靠旧环境中已有的手段实现。

2.如何使用?
直接引入项目,最简单就是CDN:

点赞
收藏
评论区
推荐文章
Souleigh ✨ Souleigh ✨
1年前
Javascript本地存储 - 入门指南
在讲解之前,我们需要明白之间的差别serversidestorage,并clientsidestorage当涉及到网站和应用程序。服务器端意味着我们使用数据库将数据存储在服务器上,客户端包含JavaScriptAPI,这些API可让您在客户端(在浏览器中)存储数据。什么是本地存储?简而言之,localstorage可以将其与数据库进行比较,只
Karen110 Karen110
1年前
手把手教你在Windows下设置分布式队列Celery的心跳轮询
/1前言/大家好,我是吴老板。用Celery官方的话来说,Celery是一个非常优秀的分布式队列,可应用于分布式共享中间队列和定时任务等等。/2 版本的差异/    Celery有很多个版本,各版本之间的差异可谓不小,比如最新的Celery6.0版本在稳定性远不如Celery4.0,所以在使用不同版本的时候,系统给到我们的反馈可能并不
Python进阶者 Python进阶者
1年前
一文带你解读​JavaScript的基本用法
前言相信做网站对JavaScript再熟悉不过了,它是一门脚本语言,不同于Python的是,它是一门浏览器脚本语言,而Python则是服务器脚本语言,我们不光要会Python,还要会JavaScript,因为它对做网页方面是有很大作用的。JavaScript的基本用法1.如何使用Js脚本1).引入Js文件在头部标签中导入脚本标签并指明脚本文件路径2).
Easter79 Easter79
1年前
vue+iview兼容IE9以上的解决办法
1\.支持ES6新语法,安装babelpolyfillIE不支持es6语法安装npminstallsavebabelpolyfill或者(下同)yarnaddbabelpolyfill修改webpac
Stella981 Stella981
1年前
IE hack技术
HTML5学堂:我们平日说的IEhack到底是什么,随着浏览器的发展,IE的hack技术也在不断的发生着变化,一起看看最新的IEhack。何为hack?行业中存在着各类浏览器,典型的如IE、火狐、谷歌等;另外,即便同样种类的浏览器,也存在着不同的版本,如IE6、IE7……IE11等。不同浏览器对于CSS的解
Stella981 Stella981
1年前
Js中polyfill的使用限制
随着浏览器的更新,JS也在新增功能功能。这些功能为我们开发带来了很大的便利。在旧浏览器上使用,需要引入相关的polyfill才能用。然而,有些功能在旧浏览器中是无法完美实现的,只有在一定条件下才能使用。本文将为大家分析这些功能的使用限制。Symbol1.禁止用typeof和instanceof,如果要判断,建议判断是否是string。
Stella981 Stella981
1年前
JS微任务 宏任务,Promise、setTimeout、setImmediate运行顺序实测
结论如下1.虽然理论上应当先运行Promise,再运行setTimeout。但是由于历史版本或使用polyfill,使得Promise未必优先运行。2.setImmediate未必比setTimeout早运行3.在最新浏览器中Promise会早于事件冒泡运行,在设计框架时应考虑这一情况以下是实测情况\
Easter79 Easter79
1年前
typescript中继承Map、Set报错的解决
Map、Set的polyfill实现是可以继承的if(!this.Map){//polyfill}else{(function(){//可继承Map替代原生MapvarGMapglobalThis.Map;try{Map.call({});}catch
Stella981 Stella981
1年前
JVM调优总结(五)
为什么要分代   分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。   在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,
密钥管理系统-为你的天翼云资产上把“锁
本文关键词:数据安全,密码机,密钥管理一、你的云上资产真的安全么?1.2021年1月,巴西的一个数据库30TB数据被破坏,泄露的数据包含有1.04亿辆汽车和约4000万家公司的详细信息,受影响的人员数量可能有2.2亿;2.2021年2月,广受欢迎的音频聊天室应用Clubhouse的用户数据被恶意黑客或间谍窃取。据悉,一位身份不明的用户能够将Clubho