具有辅助功能的浏览器是否支持CSS或JavaScript
Do browsers with accessibility support CSS or JavaScript?
我目前正在开发一个蜜罐解决方案,以防止我的网站中出现垃圾邮件,该解决方案包括添加一些具有随机名称的字段,并通过在HTML元素中添加style="display : none;"
来用CSS隐藏它们。提交时,如果这些字段中的任何一个不为空(应该是空的),则意味着垃圾邮件机器人刚刚提交了表单。或者是恶意用户。无论哪种方式,该帖子都会被拒绝。
现在,这将非常有效,但我假设所有用户都有支持CSS的浏览器。
通过JavaScript删除CSS display
属性等于none
的每个字段可以防止没有CSS支持的浏览器显示所谓的隐藏字段。
因此,这将适用于支持的浏览器
- CSS和JavaScript
- 仅CSS
- 仅JavaScript
那么,我的问题是,盲人浏览器或任何其他以可访问性为目标的浏览器是否支持CSS和JavaScript,只有CSS,只有JavaScript或none?
盲人浏览器或任何其他可访问性目标浏览器
现在还没有专门针对残疾人的浏览器。过去有一些项目是这样的,但主要的辅助技术(AT)制造商齐心协力,让他们的软件首先与IE协同工作,然后与Firefox协同工作。你正在冒险使用Chrome或Opera与AT,支持是偶然的。
支持CSS和JavaScript,只支持CSS,只支持JavaScript还是不支持?
这实际上取决于JS、CSS和AT的组合使用情况。一般来说,AT可以使用CSS。有四个方面可能会导致问题:颜色/对比度、display:table
、display: none
和visibility:hidden
。由于前两个不是问题的一部分,我们将跳过它们。JAWS仅通告在<span>
上具有display:none
或visibility:hidden
的内容。我将省略对JS的过多评论,但WebAIM有一篇文章概述了JS和可访问性。
包括添加一些具有随机名称的字段,并通过在HTML元素中添加
style="display : none;"
来用CSS隐藏它们。
我假设您将<label>
s正确地添加到所有表单元素中。请把它们加到蜜罐里,以防被人读到。我也会在<label>
中添加"忽略此字段"。
读数:
屏幕阅读器和显示器:无
JAWS、Window Eyes和display:无:返回2007
现代的屏幕阅读器通常通过将文本到语音的界面"挂钩"到普通的web浏览器(例如Internet Explorer)来工作。因此,它们支持浏览器通常支持的所有CSS和Javascript。display:none
是完美的犹太洁食。
就其他浏览器而言:自Netscape 4以来,所有主要的网络浏览器都支持display: none
等基本CSS规则。如果有人使用的浏览器根本不支持CSS,他们将面临比你的注册表更大的问题。
当我有时对这个世界感到失望时,我会使用Lynx,它不支持CSS。在这种情况下,我所做的是在隐藏字段中写入一个默认值,如:Please DON'T fill anything into this field
这可以照顾到任何看不见的人,但愚蠢的机器人仍然会覆盖它。然后我检查我的代码中的值是否与完全不同Please DON'T fill anything into this field
和利润!
BTW这种隐藏字段方法无论如何都不会阻止已确定的攻击者,因此讨论如果攻击者检查出页面的源会发生什么是一个没有意义的问题。我们只希望停止大规模的机器人——能够识别这样的文本的机器人(每个开发人员都用自己的词来传达信息)远不会落入脚本孩子的手中,即使他们确实存在。最后一部分是猜测。
如果你这样做是因为恶意用户,这是一种无用的方式吗。我不是那种坏人,但我只需要点击一下就可以禁用CSS样式。现代浏览器中的简易插件。有利于网络开发,也许还有其他用途。这就像重新发明轮子,以固定的形式处理随机隐藏的输入名称。Catch 1工作组合(读取源代码F4),你可以随心所欲地使用它。
为什么不简单地将额外的名称可见输入并将其名称存储在会话中,然后在提交后进行比较呢?
或者放一个<input type="hidden"
,里面有额外的代码(哈希或其他任何代码),你的应用程序就可以识别这些代码。
添加到其他人的答案中,我会说像JAWS这样的辅助软件甚至支持动态更改显示属性(比如,通过按下按钮来显示/隐藏div)。
- jQuery检测浏览器是否支持Zoom
- React Native当前是否支持访问用户'的通讯簿
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- CSS3卡翻转动画,检测是否不支持
- Opera Mini是否支持window.confirm()
- 是否有一个支持嵌入HTML页面的跨操作系统GUI框架
- 如何检查浏览器中是否支持文本溢出:省略号
- 是否有类似强制布局但支持单击事件的 D3 布局引擎
- 单个 Redis 客户端连接是否支持并发读写
- 目前是否支持 JqGrid 中的多分组
- 是否有用于CSS浏览器支持新功能的javascript解决方案
- 检查浏览器是否支持iFrame上的加载方法
- Ember 1.0 预发行版支持属性是否已更改
- 检查浏览器是否支持 HTML 验证
- 将 AMD 支持添加到库时,是否也应该在 define() 中列出其依赖项
- Qt-WebView是否支持包含异步Ajax的网页
- easyUI是否支持设置请求头
- JavaScript:是否有完全支持查找的正则表达式库
- 安卓股票浏览器是否支持WebSocket
- jquery复选框树是否支持“;展开直到节点“;或“;扩展父母”;当程序地调用“;检查”;