私はそのようなJavaScriptを持っています:
var nav = $('#nav_header a');
var current = null;
nav.click( function(event) {
var key = nav.index($(event.target) );
if (current != key) {
// do some fancy stuff
}
// works fine on desktop browsers
event.preventDefault();
// needed on iOS
event.stopPropagation();
}
この短いHTMLで:
<nav>
<ol id="nav_header" class="nav_header">
<li><a href="Link 1">Link 1</a></li>
<li><a href="Link 1">Link 2</a></li>
</ol>
</nav>
私が使用する場合のみevent.preventDefault();
、すべてのデスクトップブラウザで正常に動作します。ただし、iOS(5.1でテスト済み)では、アドレスバーが短時間表示されます。を追加するevent.stopPropagation();
と、アドレスバーが表示されなくなります。ただし、アドレスは一瞬変更されますが、リンクされたページは読み込まれません(イベントがキャンセルされるため)。なぜこれが起こっているのですか、どうすればそれを防ぐことができますか?私も試しreturn false;
ましたが、(もちろん、予想通り)と同じ動作をしevent.stopPropagation();
ます。