【发布时间】:2016-11-24 08:05:30
【问题描述】:
我正在尝试以高对比度模式访问我的网站。为了检测何时启用高对比度模式,我创建了一个 JavaScript 方法来检测背景图像是否被禁用,因为高对比度模式会禁用背景图像。然后,如果浏览器处于高对比度模式,我会附加一个 CSS 文件来修复高对比度显示。这在 Firefox、Edge 和 IE 中运行良好,但 Chrome 使用自己的扩展程序来创建高对比度,并且它不会禁用背景图像,因此在 Chrome 中没有附加用于高对比度的 CSS。
通过搜索,我发现 Chrome 在网站上添加了一个过滤器,而不是启用/禁用/更改网站颜色或图像本身。我已经搜索和搜索,但我找不到任何可以测试的东西来检查 Chrome 是否使用高对比度模式。如果有一种方法可以检测正在使用的扩展程序也可以解决问题,但我也没有找到方法。
我的代码实际上运行良好,我只需要能够检测 Chrome 中的高对比度模式。这是我用来检查高对比度模式的方法。
let highContrast = (options) => {
let hcDetect = jQuery(`<div id="jQHighContrastDetect"></div>`).css('background', 'url(../uploads/c-wht-small.png)');
hcDetect.appendTo(document.body);
if (hcDetect.css('background-image') === 'none') {
$('head').append('<link rel="stylesheet" href="../css/highcontrast.min.css" type="text/css" media="all">');
}
}
【问题讨论】:
-
@DiceXQ 我已经发现,它与我正在做的类似,但它也不适用于 Chrome。
-
值得一提的是,最好尽可能避免这种需求。如果设计符合 WCAG AA 对比度要求,那么您的大部分项目在各种高对比度模式下看起来都很好。背景图像将在大多数高对比度模式下隐藏,但无论如何它们都不应该传达重要信息。如果您需要在高对比度模式下显示背景颜色,请考虑使用相同颜色的大边框并将您的 box-sizing 设置为border-box,将溢出设置为隐藏。
标签: javascript css google-chrome accessibility high-contrast