如何使 <noscript> 元素可访问?

Posted

技术标签:

【中文标题】如何使 <noscript> 元素可访问?【英文标题】:How to make the <noscript> element accessible? 【发布时间】:2019-01-12 01:13:53 【问题描述】:

我正在使用WAVE(Web 辅助功能评估工具)Chrome 扩展程序测试我的应用程序,我收到了关于我的&lt;noscript&gt; 元素的警告。具体来说,警告告诉我:“确保脚本内容是可访问的。内容将呈现给极少数用户,但如果使用则必须是可访问的。”

现在,我一直在尝试找到一个可行的解决方案(尝试使用aria-hidden="true"),但似乎找不到一个确定的解决方案。有什么想法吗?

编辑:我的&lt;noscript&gt; 元素仅包含一串文本:“您需要启用 javascript 才能运行此应用。”

谢谢!

【问题讨论】:

不是每个人都可以选择启用 jJavaScript。因此,这些用户无法访问您的网站。 知道了,但在这种情况下,我想我应该忽略 WAVE 扩展警告,对吧?还是谢谢。 【参考方案1】:

noscript 元素如下所示时,它是完全可以访问的:

<noscript>You need to enable JavaScript to run this app.</noscript>

但是,WCAG 2 Techniques 几乎不使用noscript 元素。我能找到的唯一示例是在 technique SCR19: Using an onchange event on a select element without causing a change of context,尽管它与其他 JavaScript 技术相比更多相关。

WAVE 扩展中的警告点不是您需要添加 ARIA 属性; noscript 可以追溯到 1999 年的 html 4.10 规范,早在引入 WAI-ARIA 之前,它在没有 ARIA 属性的情况下工作得非常好。

您需要做的是确保您网站上支持 JavaScript 的内容是可访问的。 (这可能与 WAI-ARIA 相关。)

您如何处理不支持 JavaScript 的用户代理取决于您的网站设计方法。假设您想在不支持 JavaScript 的用户代理中提供有用的回退,您可以执行以下操作:

要么在noscript 元素中提供功能替代方案。但是,在许多情况下(取决于 JavaScript 实际执行的操作),这不会是一个等价的回退。 或者您使用“渐进式增强”:即您提供无需 JavaScript 即可工作的功能基线,然后添加 JavaScript 以提供更丰富的体验。

(提倡渐进增强是 noscript 元素在“现代”可访问性技术中没有大量使用(如果有的话)的原因之一。然而,渐进增强本身也成为争论的主题。在2013 年,它的支持者已经感觉到有必要为它辩护,反对假设每个人都启用了 JavaScript;参见例如 2013 年 7 月的Progressive enhancement is still important。)

【讨论】:

以上是关于如何使 <noscript> 元素可访问?的主要内容,如果未能解决你的问题,请参考以下文章

我们不应该使用 <noscript> 元素吗?

noscript 仅显示在 Internet Explorer 中

以编程方式使用 <noscript> 调用 Facebook 像素代码? [复制]

前端之JavaScript面向对象开发

前端之JavaScript面向对象开发

如何在 PHP 中的图像下方添加 noscript 标签?