0

現在、かなり大規模な Web ベースのアプリケーションを構築しています。私の仕事は、JavaScript と jQuery を使用してインターフェイスを構築することです。最終的に、アプリケーションは Ajax、C#、および SQL を使用することになります。したがって、どの時点でもかなり多くのことが起こっています。

イベントをリッスンする必要があります。現在、mouseover イベントと mouseout イベントを組み合わせてこのイベントをトリガーしていますが、すべてのベースをカバーしているわけではありません。

したがって、JavaScript インターバル タイマーを使用して、イベントが発生するかどうかを定期的に確認することを検討しています。コードが遅くなりすぎるのを恐れて、そうするのをためらっています。

私の質問は、これにより残りのコードがどの程度遅くなるかということです。

対応する関数で実行されるコードの量に依存することを認識しているため、発生することの簡単なリストを次に示します。

  • e.pageX と e.pageY を使用してマウス座標を取得します。
  • document.elementFromPoint を使用して、現在ホバーしている要素を確認します。
  • 上記の要素に .closest を持つ特定のクラスの親があるかどうかを確認します
  • その場合、イベントが発生します。

結論として、数ミリ秒ごとに上記を実行すると、アプリケーションが著しく遅くなるかどうかを知りたいです

アドバイスをいただければ幸いです。

4

2 に答える 2

0

以下は、 Javascript インターバル タイマーがアプリケーションの速度を低下させる例です。

HTML:

Function calls: <span id="info"></span>
<br>
<input type="text"/>​

Javascript:

$(document).ready(function() {
    window.setInterval(function() {
        foo();
    }, 13);
});
var calls = 0;

function foo() {
    calls++;
    $("#info").html(calls);
    fib(35); // calculate fibonacci numbers
}

function fib(n) {
    return n < 2 ? n : fib(n - 1) + fib(n - 2);
}​

テキスト ボックスにテキストを入力してみると、アプリケーションがいかに反応しなくなるかがわかります。お使いの PC のハードウェアによって、入力したテキストが多少遅れて表示されます。関数のパラメーターを変更するfib()と、アプリケーションが「速く」(パラメーターの数値が小さい) または「遅く」(パラメーターの数値が大きく) なります。数値を低くしても(関数が高速に実行されることを意味します)、アプリケーションのパフォーマンスが低下することはありません。

したがって、現在のケースでは、インターバルタイマーがアプリケーションの速度を著しく低下させることはないと思います。ただし、考慮すべき点がいくつかあります。

  • アプリケーションは、高速なハードウェアを搭載したデスクトップ ブラウザーでのみ使用されますか?
  • アプリケーションはモバイルデバイス/タブレットでも使用されていますか? これらはしばしばパフォーマンスが低下します。
  • 今のところ、インターバル タイマーは本当に単純なことだけを行います。しかし、将来はどうですか?開発者にとって最も簡単な方法であるため、機能がますます追加される可能性があります。

したがって、可能であれば、インターバルタイマーを避けることをお勧めします。

于 2012-08-23T04:48:03.653 に答える
0

回答というよりはコメントですが、コメント ボックスには多すぎます。

確かにこれはうまくいくはずです:

$('.myClass').on('click', '*', function () {
    ...
});

また

$(documnt).on('click', '.myClass *', function () {
    ...
});

.myClass要素がAJAX で作成されるか、AJAX によって作成されるかによって異なりDOMContentLoadedます。

于 2012-08-22T10:16:20.310 に答える