详解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 不只是脚本
May 30 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
精通Javascript系列之Javascript基础篇
Jun 07 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
Dec 25 Javascript
浅析JavaScript基本类型与引用类型
May 28 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
微信小程序实现选项卡功能
Jun 19 Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 Javascript
React中使用Vditor自定义图片详解
Dec 25 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实现抓取迅雷VIP账号的方法
2015/07/30 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
jsTree使用记录实例
2016/12/01 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python Django框架实现自定义表单提交
2016/03/25 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Django中的AutoField字段使用
2020/05/18 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
监理中标通知书
2015/04/16 职场文书
大学体育课感想
2015/08/10 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
Python实现照片卡通化
2021/12/06 Python