私は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);
});
私は、条件付きを削除し、1つのバインディングに行って、ハード値を挿入して遅れを継続しようとしました。たぶんbind関数からいくつかの変数を移動するのでしょうか?実際のカウンタープロセスを関数にすることもできますか?
いくつかの制限のために、私は公開のコピーを提供することはできませんが、私は与えられた事前に作業しています。それは、予想通り、遅れを増加させるDOMと追加のJSの量です。しかし、ラグを増やすように見えるのは2つのキーの束縛です(これは一般的にタイプを入力している間にJSを2回実行しているのでわかります)。カウンタが更新される方法の両方の理由でバインドを行います(キーを押したままにするとキーアップが機能しませんが、キーを押すと常にselect all + deleteで更新されるわけではありません) –
私が考えている解決策はkeyupとkeypressを別々の機能に束縛していますが、まったく異なる解決策を模索するかもしれません。ちなみに、これであなたの助けてくれてありがとう! –