5

私は WepApp を構築し、Google からのこのコードを使用して、タッチ デバイスの 300 ミリ秒の遅延を取り除きたいと考えています。

ドキュメント
http://developers.google.com/mobile/articles/fast_buttons

よくわかりませんが、私の HTC one X では両方のバージョンに違いは見られません。

デモ 1 (通常)
http://jsbin.com/awejal/4/edit

デモ 2 (fastclick 修正あり)
http://jsbin.com/awejal/5/edit

(デモ 2 で) コンソールに追加のエラーが表示されますTypeError: element is null が、なぜですか? 理解できません。

4

2 に答える 2

1

問題はほぼ間違いなくあなたのtyperrorからです。そのようなTypeErrorは、nullオブジェクトでメソッドを呼び出そうとしたことを意味します。なぜそのtyperrorが発生するのかを調べて、それを修正する必要があります。DOMとjQueryの間の適切なリンクがないと、Googleが提供するコードは役に立ちません。

私はあなたに問題を引き起こしている線は

new FastButton(document.getElementById("fastclick"), goSomewhere);

idの要素が表示されなかったためですfastclick

それを修正してみて、それがどのように機能するか教えてください

于 2012-11-22T21:40:42.160 に答える
1

要素が切り替えられているかどうかを検出する方法は正しいですか? 両方のように見え、共通の変数#onclick#onclickJQ共有して、どちらの状態になるべきかを検出します: bt = 0;. その結果、次々にクリックしようとすると、2 番目のクリック イベントには目に見える変化がありません。これを解決するには、属性を使用してトグル状態に関するデータを保存します...

JS:

function blub(selector) {
    if ($(selector).attr("attr-bt") == "0") {
        $(selector).attr("attr-bt", "1");
        $(selector).css('background-color', '#aa0000');
    }
    else {
        $(selector).attr("attr-bt", "0");
        $(selector).css('background-color', '#333333');
    }
}
$(document).ready(function() {
    $('#onclickJQ').attr("attr-bt", "0");
    $('#onclick').attr("attr-bt", "0");
});

あなたの質問に答えて、遅延を取り除くには、単にjQueryMobileとライブラリで提供されるタップ イベントを使用します。

$(document).ready(function() {
    $('#onclickJQ').live("tap", function() {
        blub('#onclickJQ');
    });
});​

ただし、最初のデモ ボタン [インラインの onclick イベントを使用] は、特にタップ イベントを使用するように変更する必要があります。

$(document).ready(function() {
    $('#onclick').live("tap", function() {
        blub('#onclick');
    });
});​

デモ: http://fiddle.jshell.net/jnY2n/4/show/

iPhone 4S でテスト済み。最初の div は繰り返しタップすると「遅れ」ますが、2 番目の div はスムーズに実行されます。

于 2012-11-27T12:12:21.403 に答える