详解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 相关文章推荐
treepanel动态加载数据实现代码
Dec 15 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
Jan 28 Javascript
Jquery on方法绑定事件后执行多次的解决方法
Jun 02 Javascript
Vue.js实现简单ToDoList 前期准备(一)
Dec 01 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
微信小程序实现复选框效果
Dec 28 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
在VUE style中使用data中的变量的方法
Jun 19 Javascript
vue实现整屏滚动切换
Jun 29 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的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
PDO::query讲解
2019/01/29 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
Python中return语句用法实例分析
2015/08/04 Python
django批量导入xml数据
2016/10/16 Python
wxpython实现图书管理系统
2018/03/12 Python
PyQt5实现下载进度条效果
2018/04/19 Python
详解python读取和输出到txt
2019/03/29 Python
python的常见矩阵运算(小结)
2019/08/07 Python
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
两则小学生的自我评价分享
2013/11/14 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
辞职信范文大全
2015/03/02 职场文书
圣诞晚会主持词
2015/07/01 职场文书
红白喜事主持词
2015/07/06 职场文书
大学班长竞选稿
2015/11/20 职场文书
7个关于Python的经典基础案例
2021/11/07 Python