详解React项目中碰到的IE问题


Posted in Javascript onMarch 14, 2019

最近接手一个React项目,在IE下碰到了俩问题

IE11报错如下:

详解React项目中碰到的IE问题

跟踪一下之后,发现是一些其他的npm包里面用到了startsWith这个方法,可以自己polyfill一下:

if (!String.prototype.startsWith) {
 String.prototype.startsWith = function (search, pos) {
 return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search
 }
}

不过加prototype的方法毕竟不好,可以通过引入@babel/polyfill解决,在入口文件中引入import '@babel/polyfill';

IE11问题解决后,IE10又出问题了。。。

详解React项目中碰到的IE问题

犯了stackoverflow和github的很多帖子之后,在这个帖子里找到,发现是Object.setPrototypeOf的问题,Object.setPrototypeOf说是支持了IE9-11, 实际在源码里只实现了11+(https://github.com/paulmillr/es6-shim/blame/master/README.md#L78)

解决办法可以是在polyfill url后加上excludes=Object.setPrototypeOf, 或者自己实现Object.setPrototypeOf方法,我这里引入了一个库setprototypeof,然后在入口文件中加上Object.setPrototypeOf = require('setprototypeof');

其实这个库里的实现代码非常少, 可以简单看下

'use strict'
/* eslint no-proto: 0 */
module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)

function setProtoOf (obj, proto) {
 obj.__proto__ = proto
 return obj
}

function mixinProperties (obj, proto) {
 for (var prop in proto) {
 if (!obj.hasOwnProperty(prop)) {
  obj[prop] = proto[prop]
 }
 }
 return obj
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript类继承机制的原理分析
Sep 12 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
Dec 30 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
详细分析单线程JS执行问题
Nov 22 Javascript
node.js调用C++函数的方法示例
Sep 21 Javascript
vue element-ui之怎么封装一个自己的组件的详解
May 20 Javascript
vue element-ui实现input输入框金额数字添加千分位
Dec 29 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
Aug 28 Javascript
design vue 表格开启列排序的操作
Oct 28 Javascript
js实现复制粘贴的两种方法
Dec 04 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 #Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 #Javascript
Node.js + express基本用法教程
Mar 14 #Javascript
Vue渲染过程浅析
Mar 14 #Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 #Javascript
详解使用React制作一个模态框
Mar 14 #Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 #Javascript
You might like
再说下636单管机
2021/03/02 无线电
基于mysql的论坛(5)
2006/10/09 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
python实现保存网页到本地示例
2014/03/16 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
基本款天堂:Everlane
2017/05/13 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
重点工程汇报材料
2014/08/27 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
React列表栏及购物车组件使用详解
2021/06/28 Javascript
Springboot中如何自动转JSON输出
2022/06/16 Java/Android