我正在创建一个导航列表,其中链接到各种不同的文章。过去,我将导航列表定义为包含单个元素的元素,该元素包含多个元素,每个元素都有自己独立的元素。我想知道,是否可以使用WAI-ARIA linkrole属性避免使用元素?当然,元素不允许使用属性,因此以下内容将无法转换为浏览器可理解的内容:<nav role=listbox> <ul> <li role=link href=#foo> Foo </li> </ul> </nav> WAI-ARIA建议将链接角色描述为: 对内部或外部资源的交互式引用,当激活时,会导致用户代理导航到该资源。 它继续说道: 如果这是主机语言中的本地链接(例如具有href值的HTML锚点),则激活链接会导致用户代理导航到该资源。如果这是模拟链接,则Web应用程序作者负责管理导航。 当然,我可以添加一个简单的JavaScript点击处理程序,但这会阻止浏览器确认链接指向何处。例如,在Chrome、Edge和Firefox中,当链接被激活时,屏幕左下角会出现一个灰色框,让用户知道链接的作用。在此帖子中包含的链接上悬停,用户将看到以下内容: “是否可能在不实现任何其他元素的情况下,让浏览器包含此功能?”
不,WAI-ARIA的“link”角色仅仅是描述性的,旨在帮助像屏幕阅读器这样的设备。它不会引入任何功能。当链接不是“a”元素而是使用javascript模拟的链接时,它特别有帮助。回答你的第二个问题,当你悬停在锚标签上时,链接预览是浏览器的状态栏的一部分。默认情况下,浏览器不允许你通过javascript来操作它,因为那会被认为是一个重大的安全漏洞。否则,你基本上无法相信预览是准确的,并且很容易欺骗人们点击恶意链接。那么说,有些浏览器会允许您通过更改浏览器设置或安装插件来操纵此选项。这在实际应用中并没有太多作用,因为大多数用户不会体验到这种变化,但似乎这是唯一的办法。我发现Firefox上有最详细的文档,可以在window.status页面中设置window.status = 'www.fakeurl.com',但是在此之前,您需要将dom.disable_window_status_change首选项设置为false才能正常工作。如果在状态栏中显示文本是绝对必需的,则唯一的方法是使用a元素。一般而言,如果您的应用程序允许使用a元素进行导航,则应始终使用a元素进行导航。借助CSS3,很难想象您无法这样做的情况,因为您可以将该锚点标签样式化成几乎任何您想要的外观。
a
元素,这就是它们的作用。 - CBroe<a href=...>
呢?为什么要犹豫不决地添加其他元素呢? - BrendanMcK