我在一个网页上有很多ckeditors供学生输入他们的数据。我有很多ckeditors因为每个都是一个变量。遗憾的是,输入文本字段对于请求的数据而言太小。问题是加载网页需要很长时间,有时网页会挂起。
我目前正在加载近425名编辑。
以下是我的三个代码示例:
<script type='text/javascript'>//<![CDATA[
$(window).load(function () {
CKEDITOR.on('instanceReady', function (ev) {
var jqScript = document.createElement('script');
var bsScript = document.createElement('script');
jqScript.src = 'http://code.jquery.com/jquery-2.0.2.js';
bsScript.src = 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js';
var editorHead = ev.editor.document.$.head;
editorHead.appendChild(jqScript);
editorHead.appendChild(bsScript);
});
// Load CK Editor
CKEDITOR.replace('editor1', {
contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
});
// Load CK Editor
CKEDITOR.replace('editor2', {
contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
});
// Load CK Editor
CKEDITOR.replace('editor3', {
contentsCss: 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css'
});
});//]]>
</script>
我在ckeditor上关注了 performance guidelines ,搜索了Stackoverflow以获得答案,但仍然无效。我甚至将ckeditor工具栏最小化为一行。我认为必须有一种方法来加载ckeditors而不必在页面加载时加载所有ckeditors和contentCss,但是当需要ckeditor时。任何帮助将不胜感激。
答案 0 :(得分:4)
但网页上的ckeditors总数几乎是425。
您是否曾尝试过425次同时打开任何应用程序?您浏览器中的425选项卡,425个Wordpad,425的任何内容?我不这么认为。
所以答案很短 - 你做错了。您不应该立即初始化所有编辑器。需要时根据需要加载它们,并在不需要时销毁。用户无论如何都无法同时编辑425文本。
答案越长,classic editor是最重的,因为它使用<iframe>
。因此,当您初始化425时,您会初始化425个iframe。 Inline editors要轻得多。还有divarea插件,它使经典编辑器使用内联可编辑元素而不是<iframe>
,因此它也更轻。
但答案仍然是 - 你做错了。
答案 1 :(得分:2)
接近它的最佳方法是在焦点上或通过按钮激活每个编辑器实例。甚至更酷的是在弹出窗口或弹出窗口中编辑文本,这样在保存html时释放资源就可以销毁它。
还要将您的脚本文件包含在HTML的标题中,而不是动态加载它们(缓慢的方式和缓存不好)。