详解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 对象中的类数组操作
Apr 27 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
May 10 Javascript
文本框水印提示效果的简单实现代码
Feb 22 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
jQuery满意度星级评价插件特效代码分享
Aug 19 Javascript
Javascript 计算字符串在localStorage中所占字节数
Oct 21 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
JavaScript前端面试组合函数
Jun 21 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写MySQL数据 实现代码
2009/06/15 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
jQuery实现跨域
2015/02/03 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
英国名牌男装店:Standout
2021/02/17 全球购物
PHP开发的一般流程
2013/08/13 面试题
J2EE系统只能是基于web
2015/09/08 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
对教师的评语
2014/04/28 职场文书
财务工作失职检讨书
2014/11/21 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript