首页 > 解决方案 > 如何在 javascript 锚链接中避免 href="#"

问题描述

除了使用之外,还有更好的方法来定义执行 javascript 的锚链接href="#"吗?我不喜欢使用此 href 的主要原因是它使浏览器历史记录无效。后退按钮只是从 URL 中删除“#”。如果您使用任何类型的返回链接,除非他们单击两次,否则它将不起作用。

在我的 Javascript 是内联的情况下,我可以使用href="javascript:func()",但是当侦听器从外部脚本文件附加时,这将不起作用。

所以我只是在寻找一个更干净的方向来指向我的空锚。

标签: javascripthtml

解决方案


如果您“必须”<a>为您的操作使用标签,在这种情况下,我更喜欢在事件侦听器中添加 preventDefault。这可以防止将“#”添加到 URL。

window.onload = function() {
  document.getElementById("noHash").addEventListener("click", function(e) {
    e.preventDefault();
    console.log("Hi There!");
  }); 
}
<a href="#" id="noHash">Say Hi</a>


推荐阅读