我有一个这样的 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();
.