讨论:A标签要不要避免使用 javascript:void(0)

甲是我的同事,乙是我。
某天讨论了要不要避免 a 标签加 javascript: void(0),最后还是决定加!

甲:

在某些IE里是bug。
使用 更好,这样页面还不会跳转到最顶端

乙:

使用 有个问题,点击后 windows.location 变了。这个被记录到浏览器的 history 了,这样不利于浏览器后退前进操作。

还有 在 IE 下可能会在点击后出现虚线外框,这个样式很难看, 且没法修改。

鼠标在 单击中键时会新建浏览器标签页打开这个链接,这会误导用户。

另外, 会让浏览器脚本解析文档搜索 nogo 锚点,这个影响虽小,但也不可取。

暂时没有非常完美的方案代替 javascript:void(0);

网上有些人是写一个 类然后用 $('.cancel_link').click(function(){}); 之类的脚本代替。

甲:

还有就是必须用 标签么? span 不行么

http://stackoverflow.com/questions/134845/href-tag-for-javascript-links-or-javascriptvoid0

乙:

只有 a 标签有 默认的 :hover 属性

如果用 span 或 div 代替,就得用 js 模拟 hover,比如增加一个 hover 类: span.hover{}

也有人建议用 button 代替 a。 但 button 在某些平台的样式没法调整。

甲:

Simple code example

Your HTML:

Cancel this action
Your CSS:

a { cursor: pointer; color: blue; }
a:hover,a.hover { text-decoration: underline; }
Your JavaScript:

// Cancel click event
$('.cancel-action').click(function(){
});
// Hover shim for Internet Explorer 6 and Internet Explorer 7.
$(document.body).on('hover','a',function(){
$(this).toggleClass('hover');
});
http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

乙:

a 标签要有 href 属性,不然没有 hover 也不会有默认的 cursor:pointer 样式,这样就得用 js 模拟。
也许 js 模拟还未生效,用户已经点击了链接,这样体验会蛮差的。
链接文本 这样的标签默认是没有 link 样式,在 rss 中输出或其他没有 .cancel_link 样式的地方都是显示成文本状态,没人知道这个是可点击的链接。
最保险稳妥的还是在 a 标签中加 href ,附上 js 。只不过会显得有点不够清洁。

原文链接:http://zaishanda.com/post/4

关键字:JavaScript, html, hover, 标签

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部