html - 如果我使用#!而不是 anchor 标记 <a> 的 href 中的#?

标签 html

我用过#!在我网站的标签的 href 中。如果他/她单击链接,它不会将用户带到页面顶部。但我的问题是,这合法吗?

<a href="#!">Click here</a>

代替

<a href="#">Click here</a>

最佳答案

您的目标似乎是创建用户可以单击以触发某些 JavaScript 的内容,并且您不希望出现副作用(例如导航到页面顶部)。

is it legal?

  • 它在语义上是正确的。链接应该是链接。
  • 这是一个 hack:您正在链接到带有 id="!" 的元素,并且取决于当该元素不存在时发生的错误恢复。
  • 根据构成有效 HTML 的规则,这是允许的。
  • 根据有关工作的各种可访问性立法,这可能是可以的,这些立法通常不关心某些东西是否在没有 JavaScript 的情况下工作

呈现仅用于绑定(bind) JavaScript 的可点击控件的正确方法是使用按钮。

<button type="button">Click here</button>

您可以应用 CSS 使其看起来像您喜欢的样子,所以不要让 “但我希望它看起来像一个链接” 阻止您。


更稳健的方法是使用服务器端回退(即表单提交或链接)并通过调用事件对象的 preventDefault 方法取消控件的默认行为。


进一步阅读:

关于html - 如果我使用#!而不是 anchor 标记 <a> 的 href 中的#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394896/

相关文章:

javascript - 为什么我的加载 gif 使我的页面加载速度变慢?

javascript - Web 浏览器上的 SVG 和音频

html - Bootstrap <div 类 ="navbar navbar-fixed-top">

html - 无法让 1px 与主边框对齐

javascript - 使用 Javascript 将 CSV 从 URL 解析为数组

javascript - 日期格式被错误解释

html - 嵌套表的宽度不可更改

javascript - 链接字体不会改变

javascript - 带有滑动页面和滑动图像的 Jquery

javascript - 每次点击向表中添加行,从而操作名称字段