Стоимость исполнения при использовании setInterval для опроса CLEDITOR - PullRequest
0 голосов
/ 09 марта 2011

Я использую CLEditor WYSIWYG и пытаюсь сделать обходной путь для доступа к содержимому iframe и подсчета символов (я знаю всю дискуссию о том, как не следует ограничивать символы в WYSIWYG, но мне нужно чтобы показать текстовое представление количества символов, введенных пользователем (не важно, сколько фактического 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 ]

1 голос
/ 09 марта 2011

IMO, вы идете по этому поводу неправильно. Вы должны установить обработчик событий, который запускает событие при изменении текста. Поскольку вы используете jQuery, взгляните на события jQuery: http://api.jquery.com/category/events/. В частности, прочтите событие .change(), так как я думаю, что это то, что вы хотите использовать. Вы присоединяете событие к своему объекту (#edFrame) и указываете функцию, которая будет вызываться при запуске этого события.

Вы внедрили систему ожидания ожидания, которая, хотя и работает, далека от лучшего дизайна и, вероятно, вызовет у вас головную боль в будущем.

0 голосов
/ 02 июля 2015

После предыдущего комментария это можно сделать следующим образом:

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

Имейте в виду, что указанная длина учитывает текстовые символы, а также теги форматирования.

...