iview兼容ie8_iview在ie9及以上的兼容问题解决方案

是时候亮出这张图了:

可是ie不是你不想兼容就不兼容啊。说多了都是泪。

使用iview已经有一年多的时间。总的来说,iview还是给我的工作带来了很大的方便。

主要的吐槽点就是文档写的不够清楚。

比如组件的按需引入,寥寥数语,看完按照文档引入了,结果控制台一直报错。

然后到隔壁element一看,原来引入方式并不是只有一种,有的需要通过vue.prototype.xxx这种方式。

还有对于兼容性的描述,

你这么一说我还以为ie9直接引入polyfill就可以用了呢,谁知道根本不行。在github上提issue又说不支持低版本ie了。

根据我的经验,不需要很大改动,兼容性大概ie10+,这也是element官方文档上的兼容性。

不知道iview这么做是为了吸引更多人入坑还是怎么回事,毕竟大多数开发者开发的时候都是先看官方文档而不是先去github找issue。

吐槽归吐槽,iview总体上还是不错的。下面说一下我在使用iview的过程中所遇到的ie9+的兼容性问题及解决方案。

安装babel-polyfill

IE浏览器没有内置Promise对象。不仅如此,几乎所有的ES6新增的方法在IE都不能用,此时你需要babel Polyfill

首先

npm install babel-polyfill --save

复制代码

修改webpack.base.conf.js

修改前

entry: {

main: './src/main',

},

复制代码

修改后

entry: {

main: ["babel-polyfill","./src/main"],

},

复制代码

看到网上有的教程安装完babel-polyfill又要安装es6-prommise,只能说一句:画蛇添足。

兼容dataset

[Vue warn]: Error in directive transfer-dom inserted hook: "TypeError: 无法获取未定义或 null 引用的属性“transfer”"

这是ie10及以下不支持dataset导致的,而iview的transfer-dom.js使用了这个属性

解决办法:在main.js加入如下代码

if (window.HTMLElement) {

if (Object.getOwnPropertyNames(HTMLElement.prototype).indexOf('dataset') === -1) {

Object.defineProperty(HTMLElement.prototype, 'dataset', {

get: function () {

var attributes = this.attributes; // 获取节点的所有属性

var name = [];

var value = []; // 定义两个数组保存属性名和属性值

var obj = {}; // 定义一个空对象

for (var i = 0; i < attributes.length; i++) { // 遍历节点的所有属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值