Счетчик текстового поля отстает - PullRequest
0 голосов
/ 09 сентября 2011

Я создал счетчик символов для использования в библиотеке 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);
});

Я попытался удалить условное выражение, перейти к одной привязке и даже вставить жесткие значения с ней только для того, чтобы продолжить отставание. Может быть, перемещение некоторых переменных из функции связывания? Превратить фактический счетчик в функцию?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Я сделал пример здесь: http://jsfiddle.net/zpjc6/

быстро работает для меня (хотя Chrome).я также сделал небольшое улучшение, сохранив диапазон в переменной.Хотя это хорошая практика, это не должно быть , что дорого, хотя.Но, возможно, это поможет.

edit: может быть, вы могли бы сослаться на ваш реальный сайт?

0 голосов
/ 09 сентября 2011

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

...