正 文:
最近在使用 umeditor 开发时发现点击“清除格式”时会报错。查找了下,发现是没有判断 style 对象节点是不是为空 null,就直接移除style造成的错误。
错误提示:
Uncaught TypeMismatchError: Failed to execute 'removeAttributeNode' on 'Element': The node provided is invalid. 具体位置为:
umeditor.min.js文件第30行找到:
switch(d){case "className":a[d]="";break;case "style":a.style.cssText="",!m.ie&&a.removeAttributeNode(a.getAttributeNode("style"))}
改成:
switch(d){case "className":a[d]="";break;case "style":a.style.cssText="";if(a.getAttributeNode("style")!==null){!m.ie&&a.removeAttributeNode(a.getAttributeNode("style"))}}
注意 a.style.cssText=”" 后面的逗号改成分号。 如果是开发模式,打开 _src/core/domUtils.js,查到以下代码:
switch (ci) {
case 'className':
node[ci] = '';
break;
case 'style':
node.style.cssText = '';
!browser.ie && node.removeAttributeNode(node.getAttributeNode('style'))
}
改成:
switch (ci) {
case 'className':
node[ci] = '';
break;
case 'style':
node.style.cssText = '';
if (node.getAttributeNode('style') !== null) { // 加判断
!browser.ie && node.removeAttributeNode(node.getAttributeNode('style'))
}
}
参考:
umeditor“清除格式”报错