我认为与CKeditor的setData()函数相关的一些大的内存泄漏问题。我有一个Web应用程序,用户可以使用JavaScript设计自己的内容。 CKEditor用作所述设计每个部分的用户编写内容的所见即所得编辑器。
每次用户单击其设计中的可编辑文本元素时,都会调用editor.setData,并将CKEditor数据设置为正在单击的用户设计文本元素中的任何内容。
这对于几次来说效果很好,但每当用户点击新的文本元素并调用.setData()时,该应用程序会变得越来越慢,直到网站崩溃。我尝试在我的JavaScript中禁用setData()函数,当我这样做时,我没有内存泄漏或性能问题。
是否有人遇到过类似的问题? 有人有任何建议如何避免这种内存泄漏和性能损失吗?
导致性能损失的函数是:
每次用户单击其设计中的可编辑文本元素时,都会调用editor.setData,并将CKEditor数据设置为正在单击的用户设计文本元素中的任何内容。
这对于几次来说效果很好,但每当用户点击新的文本元素并调用.setData()时,该应用程序会变得越来越慢,直到网站崩溃。我尝试在我的JavaScript中禁用setData()函数,当我这样做时,我没有内存泄漏或性能问题。
是否有人遇到过类似的问题? 有人有任何建议如何避免这种内存泄漏和性能损失吗?
导致性能损失的函数是:
function clickTextElement() {
var location = $(this);
$('.selected').removeClass('selected');
location.addClass('selected');
$('#main-tools').hide();
if(location.hasClass('textarea')){
$('#imageeditor').hide();
$('#texteditor').show();
editor.setData( $('.selected').html() );
}
}
setData()
调用。通过拍摄堆快照/记录堆分配(Chrome开发者工具)来检查占用内存的内容。不同浏览器的性能分析工具各不相同,因此请尝试几种工具并尝试确定问题所在。 - Joel Peltonen