5

簡単な背景

一部の領域で html Web ビューを使用する iOS アプリを構築しています。これらのページの html ボタンが、できるだけ iOS ボタンのように見えるようにしたかったのです。これを達成するために、タップ状態が必要だったので、タップするとhtmlボタンが押し下げられました。HTML では、これは簡単です。:active や :hover などのスタイルを設定するだけです。私は実際にこれをすでに定義していました。ただし、iOS では、これらの状態はタップでは作動しません (少なくとも通常は)。したがって、私の目標は、ボタンにクラスを追加してタッチスタート時の外観を変更する小さなスクリプトを作成することでした。

問題

しかし、それほど複雑にする必要はなかったことがわかりました...まったくの偶然で、次のコードでテストを実行しました。

document.addEventListener('touchstart', function(event) {
    console.log("test");
}, true);

私は JavaScript と jQuery にかなり慣れているので、構文をチェックし、ボタンをタップしたときに eventListener が起動することを確認するだけでした。驚いたことに、css 内のボタンの :active 状態 (および :hover 状態) が起動しました。そのコードは...私の問題を解決しました!

私の質問

ここに私の質問があります: 上記のコードは有効ですか? つまり、これを行うのは悪いことですか?空の eventListener が、デスクトップ ブラウザーが既に提供している動作をトリガーしたかのようです。この方法を使用して何か問題はありますか? 私は緑色ですが、悪い習慣を身につけたくありません。これが悪いコーディング方法である場合は、使用したくありません。

皆さんがこれについて私に与えることができる洞察をありがとう!

4

1 に答える 1

1

個人的には、空のイベント リスナーに問題があるとは思いません (関数呼び出しのオーバーヘッドを除けば、ここでは無視できる程度に聞こえます)。イベントリスナーを追加する必要があるが何もしない場合は、jQueryのnoop機能を活用することをお勧めします。

$(document).on('touchstart', $.noop);

// or

document.addEventListener('touchstart', $.noop);
于 2012-10-03T17:44:12.793 に答える