详解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控制字体大小的代码
Oct 04 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
Dec 15 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
Dec 28 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
JS+CSS3模拟溢出滚动效果
Aug 12 Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 Javascript
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
javascript解析json实例详解
2014/11/05 Javascript
jQuery基础知识小结
2014/12/22 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
解析vue中的$mount
2017/12/21 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
详解jquery和vue对比
2019/04/16 jQuery
javascript解析json格式的数据方法详解
2020/08/07 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
Python help()函数用法详解
2014/03/11 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python sublime安装及配置过程详解
2020/06/29 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
运动会领导邀请函
2014/02/05 职场文书
历史学专业求职信
2014/06/19 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python