详解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 相关文章推荐
event.srcElement+表格应用
Aug 29 Javascript
javascript编程起步(第七课)
Jan 10 Javascript
IE7提供XMLHttpRequest对象为兼容
Mar 08 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
基于jQuery的js分页代码
Jun 10 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
Jan 16 Javascript
JavaScript实现三级联动效果
Jul 15 Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
基于Layui自定义模块的使用方法详解
Sep 14 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
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
永不消失的title提示代码
2007/02/15 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
python zip文件 压缩
2008/12/24 Python
Python单例模式的两种实现方法
2017/08/14 Python
Python_LDA实现方法详解
2017/10/25 Python
Python configparser模块常用方法解析
2020/05/22 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
货物运输服务质量承诺书
2014/05/29 职场文书
激励员工的口号
2014/06/16 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
销售工作决心书
2015/02/04 职场文书
芙蓉镇观后感
2015/06/10 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书