详解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 相关文章推荐
jQuery live
May 15 Javascript
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
jquery表单验证使用插件formValidator
Nov 10 Javascript
js字符串转换成xml对象并使用技巧解读
Apr 18 Javascript
javascript判断chrome浏览器的方法
Mar 26 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
详解Vue中watch的高级用法
May 02 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
使用JS实现简易计算器
Jun 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中的日期处理方法集锦
2007/01/02 PHP
php的一个简单加密解密代码
2014/01/14 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
2009/07/09 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
详解jQuery事件
2017/01/13 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
Python 正则表达式操作指南
2009/05/04 Python
python概率计算器实例分析
2015/03/25 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
土木工程师岗位职责
2013/11/24 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
盲山观后感
2015/06/11 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle