我的Web应用程序使用了许多<a href="#">Perform client script action</a> anchor 链接,这些链接用于脚本编写(这是我10年前从Dreamweaver用户那一天起就养成的习惯),现在我开始怀疑这是否必要。

我实际上不知道为什么首先要使用<a href="#">-我的猜测是href属性的存在会导致浏览器应用:link:visited伪类,从而简化了样式表。它还使浏览器隐式地应用cursor: pointer属性,这可能是理想的。

我使用jQuery(在MooTools短暂停留之后),并且链接在没有href="#"属性和值的情况下也能正常工作,因此我应该完全删除该属性并修改样式表以补偿:link伪类的删除吗?还有什么我可能会缺少的东西,href属性注入(inject)了 anchor 元素的任何半文档伏都教?

最佳答案

<a>代表 anchor

如果您在[href]元素上包括<a>属性,则它是指向某个位置的 anchor ,这意味着您可以转到新页面,即当前页面的特定片段(因此#被称为片段标识符),或新页面的特定片段。

历史上没有<a>属性的[href]元素被分配了[name]属性,该属性可用作片段标识符的目的地。浏览器后来增加了对链接到任何项目的[id]属性的支持,现在这是链接到文档片段的首选方法。

这对于独立的<a>元素意味着什么?
a[href]元素是一个链接(这就是为什么它们与CSS中的:link匹配的原因)。链接是可单击的。 An a element without the [href] attribute is otherwise just a placeholder for where a link might otherwise have been placed,并且不可单击,它们也不是页面的Tab键顺序。

如果您希望链接对于可访问性(WAI-ARIA)很重要,可以通过键盘导航,则需要执行以下操作之一:

  • 将元素更改为<button type="button">
  • 保留[href]属性
  • 添加[tabindex="0"]以及[role="button"][role="link"](以及可能的某些样式)之一

  • 有关[role]属性的更多信息,可以在the Roles Model sectionWAI-ARIA docs中找到。

    更改标记

    如果没有理由保留[href]属性,则不妨使用<button>元素:
    <button type="button">
            ^^^^^^^^^^^^^
    
    [type]属性用于使元素成为通用按钮,否则<button>将默认为[type="submit"],由于可能触发表单提交,因此可能不希望使用。

    如果您不能使用<button>(通常在内部标记必须包含<div>时发生),则可以使用以下方法伪造<button>:
    <div role="button" tabindex="0">Some clickable text</div>
    

    您需要侦听keypress事件,并为Enter和Space触发click事件。

    保持标记

    如果要保留<a>元素及其[href]属性,则可以使用许多选项来选择其值。

    真正的联系

    前任。
  • <a href="/some/location/for/users/without/js">
  • <a href="#document-fragment">

  • 如果您需要为禁用JS的用户提供支持,也可以将他们定向到执行没有JS的等效功能的页面。

    通过扩展,这还包括提供文档片段链接以链接到同一文档中的内容。例如,可切换区域可以标记为:
    <a href="#more" class="toggleable">Read More</a>
    <div id="more">Lorem ipsum dolor sit amet</div>
    

    这样,使用JS可以折叠和扩展该区域,而如果没有JS,则该链接会将用户带到页面上的适当内容。

    一个过时的href

    前任。
  • <a href="#">
  • <a href="javascript:void(0)">
  • <a href="about:blank">

  • 如果要防止JavaScript中的默认行为在幕后运行,并且不支持禁用JS的用户,则可以使用“dud” href值将链接保持在制表顺序中,并自动启用Enter触发click事件。您应该添加[role="button"],因为在语义上<a>标记不再用作链接,而是用作按钮。
    <a href="#" role="button">Some clickable text</a>
    

    关于javascript - <a>没有href =“#”的脚本链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11144653/

    10-11 04:34
    查看更多