在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 的判斷,如上代碼所示。