ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 链接中 href='#' 和 href='###' 的区别以及优缺点 首先,`<a> 标签 + onclick='{jscode}' `是很常用的一种 js 运用方式,而不使用 `href='javascript:{jscode}'` 是为了兼容多种浏览器对 `<a>` 标签的解释和处理不同。其次,使用 `<a> 标签 + onclick='{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`即可。