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