支持辅助功能的浏览器是否支持CSS或JavaScript?

6
我目前正在开发一种蜜罐解决方案来防止网站的垃圾邮件,该解决方案在表单中添加了几个带有随机名称的字段,并通过在 HTML 元素中添加 style="display : none;" 来使用CSS隐藏它们。当提交时,如果这些字段中的任何一个不为空(正常情况下应该为空),则表示刚刚提交了一个垃圾邮件表单。无论是垃圾邮件机器人还是恶意用户,都将拒绝发布。
现在,这个方法可以完美地工作,但我假设所有用户都拥有支持 CSS 的浏览器。
通过 JavaScript 删除每个具有 CSS display 属性等于 none 的字段,可以防止不支持 CSS 的浏览器显示被隐藏的字段。
因此,这对支持以下浏览器非常有效:
- 同时支持 CSS 和 JavaScript - 仅支持 CSS - 仅支持 JavaScript
我的问题是,盲人或其他辅助功能浏览器是否支持 CSS 和 JavaScript、仅支持 CSS、仅支持 JavaScript 或根本不支持?
5个回答

4

您好,现在没有专门为残障人士设计的浏览器,虽然以前有一些项目是针对这方面的,但是主要的辅助技术(AT)制造商已经开始与IE合作,并逐渐向Firefox转移。使用Chrome或Opera进行AT操作时,支持情况会参差不齐。

关于CSS和JavaScript的支持,实际上取决于它们与AT的组合方式。通常情况下,AT与CSS兼容。但有四个地方可能会出现问题:颜色/对比度、display:tabledisplay:nonevisibility:hidden。由于前两个不是本次问题的一部分,我们将跳过它们。JAWS只会读取在<span>上设置了display:nonevisibility:hidden的内容。关于JS的评论我就不多说了,WebAIM有一篇文章提供了JS和可访问性概述

假设您已经正确地为所有表单元素添加了<label>,请为蜜罐字段添加它们,以防它们被读取。我还会在<label>中添加“忽略此字段”的说明。

参考阅读:

屏幕阅读器和display:none

JAWS、Window-Eyes和display:none:回到2007年


谢谢你的回答!(还有其他人的回答)。我不打算采纳的唯一建议是添加“忽略此字段”标签,因为这会让垃圾邮件机器人非常容易识别它。 - federico-t
鉴于文章中提到,几乎所有情况下都可以使用display:none,而JS也可以起作用,因此用户很可能甚至看不到该字段,因此我猜测缺少标签在这里不会成为无障碍问题。 - federico-t
我不是一个垃圾邮件机器人专家,但我认为它们不会特别解释label标签中的措辞。机器人可能只是在页面上搜索input并试图塞入垃圾信息。因此,忽略这个标签对于AT来说是可以的。如果您有一篇文章可以证明机器人知道跳过带有“ignore”、“skip”等单词的输入,请分享。 - Ryan B

2
现代屏幕阅读器通常通过将文本转换为语音的接口“挂钩”到普通的网络浏览器(例如Internet Explorer)上来工作。因此,它们支持浏览器通常支持的所有CSS和Javascript。 display:none 完全合法。
至于其他浏览器:基本的CSS规则,如display:none,自Netscape 4.x以来已经被所有主要的网络浏览器支持。如果有人使用不支持CSS的浏览器,他们将面临比您的注册表格更大的问题。

普通的网络浏览器和Internet Explorer在同一个句子中?! - Lee Taylor
很有道理!我的意思是“正常”指的是主流浏览器,而不是一些特殊用途的渲染引擎。 - user149341

2

有时候,当我对世界感到失望时,我会使用Lynx,但它不支持CSS。在这种情况下,我会将默认值写入隐藏字段中,例如:Please DON'T fill anything into this field

这样就可以防止看不见的人填写,但愚蠢的机器人仍然会覆盖它。然后,我在我的代码中检查该值是否与 完全相同的 Please DON'T fill anything into this field 有所不同,从而达到目的!

顺便说一句,这种隐藏字段方法无法阻止一个有决心的攻击者,所以讨论如果攻击者检查页面源代码会发生什么是没有意义的。我们只想阻止大规模的机器人 - 而能够识别此类文本的机器人(每个开发人员都使用自己的单词来传达信息)远未落入脚本小子之手,即使他们存在。最后一部分是猜测。


1

如果您是因为恶意用户而这样做,那么这是无用的方式 - 这是我的观点。我并不是那些不良家伙,但对我来说,禁用CSS样式只需要一个点击即可。现代浏览器中的易用插件。对于Web开发和其他事情很有用。就像重新发明轮子一样,在固定表单中使用随机隐藏输入名称。捕获1个工作组合(阅读源代码F4),然后可以随意使用。

为什么不直接提取名称可见输入并将其名称存储在会话中,在提交后进行比较呢?

或者,在那里放置一个带有额外代码(哈希或其他任何内容)的<input type="hidden",只有您的应用程序才能识别。


大多数垃圾邮件机器人都太愚蠢,以至于会掉入这样的陷阱,因为它们的愚蠢方法在其他任何地方都有效,而那些无法奏效的网站也是积极的网站管理员删除和打击垃圾邮件的网站,所以不需要坚持。除非你是Google、Hotmail、银行或任何有巨大回报的网站,如果你能破解他们的反垃圾邮件系统,那么就会付出巨大的努力。 - FelipeAls

0

除了其他人的回答之外,我想说辅助软件(如JAWS)甚至支持显示属性的动态更改(例如通过按按钮来显示/隐藏div)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接