<一个href onClick="return false;" >在Safari / iOS中不起作用?



我的页面中有以下代码:

<a href onClick="return false;">Press me!</a>

链接放置在具有有用的 onClick 事件的范围内。

现在,在Chrome和Firefox中,这完美地工作。点击链接,执行有用的事件,每个人都很高兴。在使用默认 Safari 浏览器的 iOS(iPhone 和 iPad)中,这很糟糕 - 单击链接后,整个页面将重新加载,并且永远不会执行有用的事件。

我也试过

<a href="#" onClick="return false;">Press me!</a>

我理解这是错误的做法。在Chrome和Firefox中,它运行良好,但在iOS的Safari中,它跳回到页面的开头(但它确实执行了有用的事件,所以从某种意义上说它更好)。

我错过了什么?

您可以设置href="#",我注意到相同的跳转到页面顶部。 #是一个页面内锚点,我相信它指的是页面的顶部。我不清楚为此定义的行为。但是,唉,你想取消它。

在iPhone 5.0.1模拟器中,结合使用两种取消方法可以工作,并且不会滚动到顶部。这是我完整的test.html文件。它适用于模拟器,Chrome和OS X Safari。

<div style="height: 1000px; background-color: blue;"></div>
<a href="#" onClick="event.preventDefault(); return false;">Poke it!</a>
<div style="height: 1000px; background-color: red;"></div>

作为记录,删除event.preventDefault();会重复您的错误。

从您的描述来看,这似乎是 iOS 浏览器 JS 实现中的一个错误(也许创建一个最小的代码来演示它?

一个简单的解决方法是将<a href...>替换为 <span style="cursor:pointer;">

您是否尝试过纯粹从javascript绑定元素?

<a href="#" id="nogo">Foo</a>
document.getElementById('nogo').onclick = function(ev) {
ev.preventDefault();
};

最新更新