我用过#!在我网站的标签的 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/