日期:2014-05-16  浏览次数:20769 次

UEditor 粘贴 Excell 中的表格时报错导致无法粘贴的解决办法

    在UEditor一些版本中,如果粘贴Excell中的内容到编辑器,会粘贴不进去,打开控制台发现JS报错了。

在ueditor.all.js:3048行报如下错误:

Uncaught TypeMismatchError: Failed to execute 'removeAttributeNode' on 'Element': The node provided is invalid.

    看这个错误应该就能知道导致错误的原因可能是调用 removeAttributeNode的对象为null或者传进 removeAttributeNode 中的参数为null。

    定位到这行代码看一下:

 removeAttributes:function (node, attrNames) {
        attrNames = utils.isArray(attrNames) ? attrNames : utils.trim(attrNames).replace(/[ ]{2,}/g,' ').split(' ');
        for (var i = 0, ci; ci = attrNames[i++];) {
            ci = attrFix[ci] || ci;
            switch (ci) {
                case 'className':
                    node[ci] = '';
                    break;
                case 'style':
                    node.style.cssText = '';
                    //if(node.getAttributeNode('style') != null){ //加上这句
            //3048            !browser.ie && node.removeAttributeNode(node.getAttributeNode('style'))
                    //}
            }
            node.removeAttribute(ci);
        }
    },

   导致错误的原因就是3048行 node.getAttributeNode('style') 返回null,然后传入了 removeAttributeNode 里。解决的方法是加入node.getAttributeNode('style') 为 null 的判断,如上代码所示。