Javascript iOS Safari Mobile:为什么Safari很快就会显示链接,而不是取消活动?

Javascript iOS Safari Mobile:为什么Safari很快就会显示链接,而不是取消活动?,javascript,html,ios,mobile-safari,Javascript,Html,Ios,Mobile Safari,我有这样一个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

我有这样一个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()时,它也会停止显示地址栏。但是:它仍然会在瞬间更改地址,但不会加载链接页面(因为事件被取消)。为什么会发生这种情况?我该如何预防?我还尝试了
    返回false,但它(当然,正如预期的那样)与
    event.stopPropagation()具有相同的bevahior

    如果将
    event.preventDefault()
    event.stopPropagation()
    移动到函数顶部,会发生什么情况?将href更改为#?如果我是你,我会按照Detect说的做,首先使用rel或rev:非常感谢你的建议。在穿上它之前,我做的第一件事就是把它放在最上面(我的问题中没有写这个),因为我认为这可能是解决办法。但那没用。因此,当向链接添加
    #
    时,它会停止“闪烁”。但我并没有放松JavaScript关闭/SEO退路,因为这些锚确实存在。当JavaScript打开时,我可以更改
    href
    ,但不知怎的,我对此感觉不太好