我不打算开始辩论.
如果我们想要使用onClick事件,我们应该以某种方式禁用href来触发. – 它是否正确 ?
如果以上是正确的,我相信javascript:void(0)的优点是不会触发滚动行为.
这些假设是否正确?
注意:我不打算搜索一个嵌合体,但我的任务是找到一种以跨浏览器方式设置按钮样式的方法,没有任何可访问性(根本没有),没有黑客和怪癖.
解决方法
如果要阻止链接,请在单击处理程序中添加
event.preventDefault()
(IE中为
event.returnValue = false;
).
看起来你只是看到一个链接,而不是它的功能(或目的).如果是这样,您可以使用带有CSS的button
来相应地设置样式.
应该避免与href内容#或javascript:void(0)建立真正的链接.
进一步说明:
使用链接只是为了点击“可点击”并不好.链接具有独特的句法意义.由于可以为每个元素分配单击事件处理程序,因此可以使用任何其他元素.
语法上最正确的一个(imo)将是button
,因为你仍然可以使用tab来导航它们.您可以使用CSS为它们设置样式,使它们看起来像链接(如果您愿意)(see this example).
现在关于防止默认操作:
假设您有一个具有正确href值的普通链接,并且您想拦截点击.在您分配给元素的点击处理程序中,例如
link.addEventListener('click',function(event){ // some code event.preventDefault(); },false);
使用event.preventDefault()可以防止默认操作(如果是链接),则遵循URL.
(上面的代码是W3C兼容浏览器的一个例子,IE有点不同)