Я создал счетчик символов для использования в библиотеке JQuery, чтобы иметь эффект, аналогичный счетчику Twitter (счетчик оставшихся символов слева). Тем не менее, я заметил, что, по крайней мере, FireFox не справляется с этим (другие браузеры демонстрируют некоторую нагрузку, но не так плохо). В основном, печатая в устойчивом темпе, он начнет играть «догоняй» и даже заставлять браузер не отвечать на запросы, пока он не наверстает упущенное. При попытке ввести одинаковую скорость набора текста в текстовом поле Twitter, оно вообще не замедляется!
Несмотря на то, что у меня есть плагин для автоматического изменения размера, который наблюдает за этим полем, я пробовал много изменений и изменений, чтобы найти, что только этот код вызывает замедление. Поэтому, хотя я могу предположить, что браузер может обрабатывать слишком много математики в определенное время, я не совсем понимаю, почему есть проблема с тем, насколько это просто, и не могу придумать решение.
/* Post Saying text count */
var postSayingLimit = 450;
$('span.counter').text(postSayingLimit);
$('#post-saying').bind('keyup keypress', function() {
var postSayingUsed = $(this).val().length;
if(postSayingUsed >= postSayingLimit - postSayingLimit / 10) {
$(this).parent().find('span.counter').addClass('counter-limit');
} else {
$(this).parent().find('span.counter').removeClass('counter-limit');
}
var postSayingCount = postSayingLimit - postSayingUsed;
$(this).parent().find('span.counter').text(postSayingCount);
});
Я попытался удалить условное выражение, перейти к одной привязке и даже вставить жесткие значения с ней только для того, чтобы продолжить отставание. Может быть, перемещение некоторых переменных из функции связывания? Превратить фактический счетчик в функцию?