先将summernote.min.js格式化,idea格式化:ctrl+shift+alt+l,然后找到rt()方法,替换掉
function rt(t, e) {
var n, o;
if (!t.node) return null //低版本浏览器ctrl+a全选时切换字体失效bug修复
if (/*t.node!=null &&*/ W(t.node)) return {node: n = t.node.nextSibling, offset: o = 0};
if (U(t.node) === t.offset) {
if (S(t.node)) return null;
var i = at(t.node);
i ? (n = i, o = 0) : (n = t.node.parentNode, o = et(t.node) + 1), S(n) && (n = t.node.nextSibling, o = 0)
} else if (nt(t.node)) {
/* if (W(t.node.childNodes[t.offset])){
var i = at(t.node.childNodes[t.offset]);
i ? (n = i, o = 0): (n = )
}*/
// if (o = 0, W(n = t.node.childNodes[t.offset])) return null
if (o = 0, W(n = t.node.childNodes[t.offset])) /*return null*/{ /*切换字体大下或字体时遇换行停止bug解决*/
var i = at(n);
i ? (n = i, o = 0) : (n = n.parentNode, o = et(t.node.childNodes[t.offset]) + 1), S(n) && (n = t.node.childNodes[t.offset].nextSibling, o = 0)
}
/*{
var i = at(n.node);
i ? (n = i, o = 0) : (n = n.node.parentNode, o = et(n.node) + 1), S(n) && (n = t.node.nextSibling, o = 0)
}*/
} else if (n = t.node, o = e ? U(t.node) : t.offset + 1, W(n)) return null;
return {node: n, offset: o}
}
原因是如果某个节点中的子节点只有一个并且为<br>时(W()方法判断),此方法会返回null,导致循环终止