Javascript iOS Safari Mobile:为什么Safari很快就会显示链接,而不是取消活动?
我有这样一个JavaScript: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
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
,但不知怎的,我对此感觉不太好