我正在使用nicEdit编辑器,如果我向contenteditable div添加一些内容并为其添加一些样式,然后从div中删除所有内容并再次键入内容,则需要使用内联样式的span标记中的先前样式。我试图使用下面的代码
强制使用div$j(document).ready(function () {
if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
$j('.nicEdit-main').bind('DOMNodeRemoved', function (event) {
if (this.innerHTML == "" || this.innerHTML == "<br>")
this.innerHTML = "";
});
}
});
但是现在我在控制台中出现“超出最大堆栈大小”错误。
答案 0 :(得分:1)
您的问题是设置innerHTML
会触发DOMNodeRemoved
事件,因此您会进入一个事件循环,在某些时候会超过堆栈大小。这是一个解释问题的小提琴:
http://jsfiddle.net/38b7zd9b/1/
无论如何,有点不清楚你要用上面的代码完成什么,为什么你要使用变异事件,但要注意你使用的是不受支持/弃用的API,这意味着API不可靠
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events