首先,<a>
标签 + οnclick=’{jscode}’ 是很常用的一种 js 运用方式,而不使用 href='javascript:{jscode}'
是为了兼容多种浏览器对<a>
标签的解释和处理不同。其次,使用<a>
标签 + οnclick=’{jscode}’ 时经常会加一个 href='###'
,而有时这个 href='###'
会被误写为 <a href='#'>
是因为使用者没有理解 ‘#’ 和 ‘###’ 的区别。
简单地说,就是说如果想定义一个空的链接,又不跳转到页面头部,可以写href="###"
。详细解释就是’#’ 是有特定意义的,如果 ‘#’ 后有内容会被认为是一个标签而从页面找到相应标签跳转到该处,找不到时会跳到页首, ‘###’ 其实就是一个无意义的标签指定,也就是一个 ‘#’ 和不存在的标签 ‘##’ 的组合,页面中找不到命名为 ‘##’ 的<a>
时该链接就不会发生跳转,也就不会导致执行 onclick 中的内容时突然发生页面跳到页首的问题。’###’ 只是一种使用者习惯,如果你愿意,可以随便找一个跳转不到的标签作为命名。说白了”###” 就是一个不是锚点的字符串 浏览器找不到也不会跳到页首,原理就是依赖了网页的报错机制,找不到就不做处理。
有些人说,不喜欢“###”因为他会改变链接。都是使用一直用javascript:void(0
)或者javascript:。href="javascript:void(0);"
但也有人说用href="javascript:void(0);"
可能会有浏览器兼容问题。在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#"
,但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,用户体验不好。
javascript:void(0)
这种伪协议,少写的好,如果你看过一些web标准的书就知道为什么了。 2.链接(href)直接使用javascript:void(0)在IE中可能会引起一些问题,比如:造成gif动画停止播放等,所以,最安全的办法还是使用“####”。为防止点击链接后跳转到页首,onclick事件return false即可。
转载自http://www.cnblogs.com/cssfirefly/p/3865926.html
<a href="?">
空会跳转到本页,一个#跳转到顶部,两个#就不会跳转了, 有些人说,不喜欢“###”因为他会改变链接,最安全的办法还是使用“####”