javascript - 在 Chrome 浏览器中检测高对比度扩展程序的使用

标签 javascript css google-chrome accessibility high-contrast

我正在尝试让我的网站在高对比度模式下易于访问。为了检测何时启用高对比度模式,我创建了一个 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">');

  }
}

最佳答案

如果您询问的是 Windows 高对比度模式,Chrome 并不知道它何时处于事件状态。

一般来说,如果 Windows 用户选择启用高对比度模式,则该用户正在 Microsoft Internet Explorer 或 Microsoft Edge 中冲浪(因为这些浏览器支持)。它们都支持专有的 -ms-high-contrast @media规则。

检查丢失的背景图像是一种可以在 IE/Edge 中使用的策略,但使用媒体查询是更好的方法。特别是因为 Windows High Contrast Mode will soon allow background images in Edge .

如果您希望检测特定扩展程序何时在 Chrome 中设置了自己的高对比度模式,了解是哪个扩展程序会很有帮助。

例如,使用 High Contrast您可以在 <html> 上查找以下属性。标签:hc="a3"hcx="3" (您的值可能不同,但属性应该匹配)。如果你打开浏览器开发工具,你可以看到它做的一些其他事情。但这些属性位于 DOM 的最高级别,使用起来可能是最安全的。

如果您询问的是 Android 版 Chrome,那也是一个不同的过程。

关于javascript - 在 Chrome 浏览器中检测高对比度扩展程序的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492220/

相关文章:

javascript - 我如何使用基于 2 个匹配值的数组的 setValue()?

javascript - 如何将整个 .js 文件的变量内容保存并加载到用户计算机上?

javascript - 使用 Styled-Components 自定义 Material-UI 组件

javascript - 如何用jquery加载图片?

javascript - Chrome 打包应用程序 - 在后台/事件页面中使用 AngularJS

javascript - 实现 Chrome 扩展开/关切换按钮

javascript - 从外部脚本文件附加事件监听器

javascript - 如何检查 jQuery UI 插件是否附加到元素?

css - 如何将 CSS 应用于 Meteor 中的选定项?

javascript - 文本框的 Textchanged 事件不会在 chrome 中触发