【发布时间】:2020-10-13 00:04:42
【问题描述】:
我试图在我的网页中添加一个 可访问性 功能,该功能是用 React.js 构建的,以确保我的横幅颜色不会受到 的影响Chrome 的高对比度插件。
我尝试通过添加一个函数来检测 Chrome 插件是否已打开来实现它,并且我的代码应该切换一个类以确保横幅颜色在高对比度模式下不会发生太大变化。我注意到这个变化只有在刷新页面后才能看到,所以我添加了这行代码window.location.reload()来手动重新加载页面。
问题是,这部分代码进入了一个无限循环,我的页面不会停止重新加载。我尝试用其他方法替换reloading部分,结果还是一样。这是我的 React 组件的代码:
componentDidMount = () => {
this.keepBannerColor()
}
keepBannerColor() {
// these two lines of code below is tell whether the browser is chrome
let userAgentString = navigator.userAgent;
let chromeAgent = userAgentString.indexOf("Chrome") > -1;
let header = document.querySelector('.mizaru-header')
if (header && chromeAgent) {
console.log('funciton triggered')
let htmlTag = document.getElementsByTagName('html');
let isInverted = htmlTag[0].getAttribute('hc') != null
header.classList.toggle('inverted', isInverted)
window.location.reload()
}
}
这是我的切换类 CSS 代码:.inverted{ filter: invert(100%); }
任何帮助都会很好!
【问题讨论】:
-
您不需要重新加载页面来更改 css 类。
-
此外,如果您从服务器重新加载文档,您对文档所做的任何更改都将丢失。
标签: javascript reactjs google-chrome dom accessibility