使用setInterval轮询CLEDITOR时的性能成本

时间:2011-03-09 04:59:57

标签: javascript jquery wysiwyg cleditor

我正在使用CLEditor WYSIWYG并试图解决方法来访问iframe内容并计算字符数量(我知道关于你不应该如何限制所见即所得的字符的整个辩论,但我需要展示用户输入了多少个字符的文本表示(不关心生成多少实际的HTML)。通过使用 setInterval()作为CLEditor的事件挂钩,我能够实现字符数。只会改变模糊的火焰。

我的真实问题:

使用setInterval()对性能有害还是我应该使用另一种方法来轮询更改的文本?

以下是我目前使用的方法:

       function checkChange(){
            $(document).ready(function() {
                var t = $("#edFrame").contents().find("body").text().length;

                $(".limitCounter").text(t);

            });
        }


        $(document).ready(function () {

            $(".wysiwyg").cleditor();


            setInterval('checkChange()', 50);


        });

2 个答案:

答案 0 :(得分:1)

IMO你这是错误的方式。您应该设置一个事件处理程序,在文本更改时触发事件。由于您正在使用jQuery,请查看jQuery事件:http://api.jquery.com/category/events/。具体来说,请阅读.change()事件,因为我认为这就是您要使用的内容。您将事件附加到对象(#edFrame),并指定在触发该事件时要调用的函数。

你已经实施了一个忙碌等待系统,虽然它有效但远非最好的设计,并且可能会在将来给你带来麻烦。

答案 1 :(得分:0)

按照上一条评论,可以这样做:

$("#edFrame").cleditor().on('change', function () { 
   var t = $(this)[0].$area.val().length;
   $(".limitCounter").text(t)
});

请记住,显示的长度会计算文本字符以及格式标记。