0

私はそのような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();ます。

4

0 に答える 0