我有类似的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();
相同。