iview 在IE10下使用Tooltip,Dropdown,报"TypeError: 无法获取未定义或 null 引用的属性“transfer”"

yizd12fk  于 4个月前  发布在  其他
关注(0)|答案(9)|浏览(63)

在IE10下报 :[Vue warn]: Error in directive transfer-dom inserted hook: "TypeError: 无法获取未定义或 null 引用的属性“transfer”"
found in
在IE9下直接出错: 对象不支持“now”属性或方法
请问这些标签是不支持IE10,IE9吗?谢谢

vq8itlhq

vq8itlhq1#

我刚刚发现这个问题,RC版本的时候还没有问题,现在突然发现问题了,看来版本要固定才行……

oxcyiej7

oxcyiej72#

所以解决了吗?我也遇到这个问题了,版本:2.2.0

6jjcrrmo

6jjcrrmo3#

@VanMess do you have time to contribute to the fix?

If you have possibility to test in IE9 and IE10 I think we just need to add the polyfill

import 'core-js/fn/date/now';

here: https://github.com/iview/iview/blob/v2.3.2/src/index.js#L2-L3.
Because IE9 and IE10 do not have Date.now().

ckocjqey

ckocjqey4#

这是因为在transfer-dom.js中使用了不兼容ie11以下的dataset属性,添加以下代码可兼容ie8+浏览器。

//兼容 transfer-dom.js中 使用了 dataset 的问题

if (window.HTMLElement) {
    if (Object.getOwnPropertyNames(HTMLElement.prototype).indexOf('dataset') === -1) {
        Object.defineProperty(HTMLElement.prototype, 'dataset', {
            get: function () {
                var attributes = this.attributes; //获取节点的所有属性
                var name = [],
                    value = []; //定义两个数组保存属性名和属性值
                var obj = {}; //定义一个空对象
                for (var i = 0; i < attributes.length; i++) { //遍历节点的所有属性
                    if (attributes[i].nodeName.slice(0, 5) == 'data-') { //如果属性名的前面5个字符符合"data-"
                        // 取出属性名的"data-"的后面的字符串放入name数组中
                        name.push(attributes[i].nodeName.slice(5));
                        //取出对应的属性值放入value数组中
                        value.push(attributes[i].nodeValue);
                    }
                }
                for (var j = 0; j < name.length; j++) { //遍历name和value数组
                    obj[name[j]] = value[j]; //将属性名和属性值保存到obj中
                }
                return obj; //返回对象
            }
        });
    }
}
8xiog9wr

8xiog9wr5#

@sharpfeel 这个问题是解决了,但是transfer把位置移错了怎么解决,只要有使用了transfer指令,对于其他没有使用transfer指令的显示也错位了
图1

图2

bqucvtff

bqucvtff6#

是在transfer-dom.js哪里加这些代码的

ufj5ltwl

ufj5ltwl8#

sharpfeel 的回答 正解~~~

相关问题