0

そのリンクにアクセスする代わりに、画面上で何かを行う単純なクリック ハンドラーがあります。コードは次のとおりです (意味のない部分は省略していますが、重要な部分は正確です)。

<a href="#" id="others">Link Text</a>

<script type="text/javascript" src="./path/to/jquery.js"></script>
<script type="text/javascript">
$('#others').on('click', function(ev){
    ev.preventDefault();
    ev.stopPropagation();

    // Doing stuff (some simple DOM manipulation)

    return false;
});
</script>

これは、適切なブラウザで問題なく動作します。Android (古い Webkit ビルドと新しい Chrome ビルドの両方) で問題なく動作し、iPad 2 の iOS でも問題なく動作します... しかし、私のユーザーの 1 人が iPhone 4 を使用しており、そこからすべての楽しみが始まります。

リンクをクリックすると、リンクが読み込まれます。3 つの別々のトリガーがないにもかかわらず、イベントはまだ発生しています。他の JavaScript がページで機能しており、私が言うように、これは他の場所でも機能しています。実際にはもう少し混乱させるために、イベントは非常にまれに抑制されます。時間の 1% 未満。

これはiPhoneの既知の問題ですか?これをすべて行うより良い方法はありますか?

JavaScript は本文の最後にロードされます (まだ本文の中にありますが、言及されているすべての DOM 要素の後で)。jQuery のバージョンは 1.10.1 です

4

1 に答える 1

1

使ってみてhref="javascript:void();"

<a href="javascript:void();" id="others">Link Text</a>

$('#others').on('click', function(ev){
//ev.preventDefault();
//ev.stopPropagation();

// Doing stuff (some simple DOM manipulation)

return false;
});
于 2013-11-12T11:41:24.577 に答える