-1

对于我正在处理的项目,页面上有一些富文本编辑框,数量各不相同,但可以变得非常大(50 多个问题/答案集,每个有 8 个文本框)。

最初这些是接受 HTML 的纯文本框,但由于将使用它的最终客户端不精通 HTML,我们改用富文本编辑器,因此使用 javascript 富文本插件(NicEdit )。

由于这些输入框的数量可变,我使用的是 jQuery 选择器:

 $("textarea").each(function(index) {
      var id = this.id;
      myNicEditor.addInstance(this);
      $("#nic"+id).attr('contenteditable','false');
 });

但是,当总编辑人数超过 200 人时,我开始收到脚本超时警告。在 400 处,我必须单击“继续”两次才能完成。

我将如何重组此功能以防止超时?

4

2 回答 2

0

jQuery 在选择器中做了很多事情,但是找到的元素并没有包裹在 jQuery 对象中。200 不算大,但无论如何,你可以做 2 件事:

  1. 通过 vanilla JavaScript 调用查找所有文本区域
  2. 通过 setTimeout 处理事件队列中的文本区域
var els = document.getElementsByTagName("textarea")
var i = 0
var func = function() {
    var el = els[i]
    myNicEditor.addInstance(el);
    $("#nic"+el.id).attr('contenteditable','false');
    i++
    setTimeout(func,0)
}
func()
于 2013-07-19T18:44:25.947 回答
0

网页上的 400 个富文本编辑器必须使用大量资源。我认为您最好的选择是不要尝试将所有这些都放在一个页面上。尝试重新组织您的应用程序 - 可能将其分成更小的页面,或者在需要时按需加载页面的子部分。

或者您可以保留 textareas 原样,然后根据需要一次仅加载一个富编辑器。

于 2013-07-19T16:41:26.217 回答