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时,它会回到页面顶部...
我有同样的问题.事实证明,它是iOS 5版Safari中的一个错误.在较新版本或较旧版本或任何其他浏览器或平台中不会发生.
我通过添加preventDefault
到onclick事件处理程序来解决它,除了现有的return false
,像这样:
<a href="#" onclick="event.preventDefault(); return false;">click me</a>
Run Code Online (Sandbox Code Playgroud)
不理想,但确实解决了问题.
为什么不?我认为,你必须调用一个函数,而不仅仅是返回 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)