在移动设备的Safari中,<a href="#" onclick="return false">不起作用,为什么?

sky*_*orm 8 javascript safari onclick ipad preventdefault

在移动设备的游戏中,如iphone或ipad,<a href="#" onclick="return false">不会阻止默认行为,页面仍然被重定向到'#',为什么......?像这些HTML代码:

<div style="height:1000px; width:100px"></div>
<br />    
<a href="#" onclick="return false">click me</a>
Run Code Online (Sandbox Code Playgroud)

当点击moblie设备的safari时,它会回到页面顶部...

SDC*_*SDC 5

我有同样的问题.事实证明,它是iOS 5版Safari中的一个错误.在较新版本或较旧版本或任何其他浏览器或平台中不会发生.

我通过添加preventDefault到onclick事件处理程序来解决它,除了现有的return false,像这样:

<a href="#" onclick="event.preventDefault(); return false;">click me</a>
Run Code Online (Sandbox Code Playgroud)

不理想,但确实解决了问题.


Tob*_*obi 0

为什么不?我认为,你必须调用一个函数,而不仅仅是返回 false...

<a href="#" onclick="javascript:myFunction()" id="test_a">click me</a>

function myFunction() {
  var elem = document.getElementById('test_a');
  if (elem.addEventListener) {
      elem.addEventListener('click', function() {
          alert('clicked');
      }, false);
  } else {
      elem.attachEvent('onclick', function() {
          alert('clicked');
      });
  }

  return false;
}
Run Code Online (Sandbox Code Playgroud)