ARIA Properties,DOM和Graceful Degradation

时间:2011-08-01 16:49:02

标签: javascript html5 wai-aria

ARIA属性是否需要存在于实际的HTML中?或者,它们可以在运行时通过Javascript添加吗?

考虑以下情况......

<button id="submit" type="submit">Submit</button>
<div id="validation-message"></div>

如果用户的浏览器没有Javascript,我们会在新页面上显示验证(由服务器处理和生成)。如果用户的浏览器确实有Javascript,我们使用以下内容扩充上述HTML,然后在DIV中动态显示验证。

$('#submit').attr({'aria-haspopup':true, 'aria-owns':'validation-message'});
$('validation-message').attr({'role':'alert', 'aria-live':'assertive'});

我想另一个问题是,在HTML源代码中直接拥有这些ARIA属性是否有任何损害?如果Javascript不存在,ARIA会做什么吗?

2 个答案:

答案 0 :(得分:4)

ARIA Landmark角色可以直接放入标记中,即使禁用JavaScript也可以使用它们。如果ARIA属性描述的功能仅在启用JavaScript时可用,我会说可以使用JavaScript添加这些属性。

答案 1 :(得分:0)

W3C文档(工作草案)Using WAI-ARIA in HTML在条款Add ARIA inline or via script?中建议使用脚本而不是用HTML标记编写ARIA属性。然而,它补充说,如果属性“不依赖于脚本来提供交互行为”,或者“仅在支持脚本的浏览上下文中支持内容和交互”,则可以用标记编写该属性。

这有点间接,甚至可能是人为的说法,将属性放在标记中是可行的。例外情况是属性表示没有脚本的情况下有意义的关系,但在禁用脚本时会提供不正确的信息。我会说aria-haspopup可能属于这个类别,因为一个元素可能会有一个没有脚本的弹出窗口,但是目前它必须用脚本实现 - 所以当禁用脚本时,浏览器可能仍然期望{ {1}}具有相关性,因此会得出错误的结论。