详解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 相关文章推荐
将json当数据库一样操作的javascript lib
Oct 28 Javascript
Textarea根据内容自适应高度
Oct 28 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
AngularJS学习笔记之ng-options指令
Jun 16 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
Mar 02 Javascript
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
webpack学习教程之前端性能优化总结
Dec 05 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 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
基于mysql的bbs设计(五)
2006/10/09 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
js href的用法
2010/05/13 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
深入解析Python中的上下文管理器
2016/06/28 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
python numpy数组中的复制知识解析
2020/02/03 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
前台领班岗位职责
2013/12/04 职场文书
学前教育求职自荐信范文
2013/12/25 职场文书
管理心得体会
2013/12/28 职场文书
合伙经营协议书范本
2014/04/18 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书