详解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 相关文章推荐
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
js异常捕获方法介绍
Apr 10 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
JS实现拖动示例代码
Nov 01 Javascript
javascript中的事件代理初探
Mar 08 Javascript
JavaScript面试开发常用的知识点总结
Aug 08 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
Feb 28 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
May 10 Javascript
JS中call和apply函数用法实例分析
Jun 20 Javascript
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 Javascript
JavaScript事件对象深入详解
Dec 30 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笔记 字符串处理
2010/10/19 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python操作cfg配置文件方式
2019/12/22 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
加拿大探亲邀请信
2014/01/28 职场文书
迎新晚会邀请函
2014/02/01 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
我是特种兵观后感
2015/06/11 职场文书
名人传读书笔记
2015/06/26 职场文书
围城读书笔记
2015/06/26 职场文书
学校学期工作总结
2015/08/13 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
python基础入门之字典和集合
2021/06/13 Python
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python