【问题标题】:What if I use #! instead of # in href of anchor tag <a>?如果我使用#!而不是锚标签<a>的href中的#?
【发布时间】:2022-04-08 14:03:52
【问题描述】:

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

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

而不是

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

【问题讨论】:

    标签: html


    【解决方案1】:

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

    合法吗?

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

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

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

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


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


    进一步阅读:

    【讨论】:

      【解决方案2】:

      如果你的目标是创建一些可点击的东西来触发一些 JavaScript 函数,那么另一种实现方式是:

      <a href="javascript:alert('Hello World!');">Execute JavaScript</a>
      
      • 当用户点击链接而不刷新或滚动页面时,它将执行 JavaScript 代码。
      • 最佳做法是链接 JavaScript。

      完整示例:

      <!DOCTYPE html>
      <html>
      <body>
          <a href="javascript:alert('Hello World!');">Execute JavaScript</a>
      </body>
      </html>
      

      更多详情请见How to link to a JavaScript (HTML5 a href script)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-09
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多