【发布时间】:2021-05-29 09:09:12
【问题描述】:
我在使用 tab visibility 时遇到此错误。其中“文档”类型上不存在“msHidden”和“webkitHidden”
const TabVisibilityComponent = () => {
let hidden = null;
let visibilityChange = '';
const [action, setAction] = useState('show');
if (typeof document.hidden !== 'undefined') {
hidden = 'hidden';
visibilityChange = 'visibilitychange';
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
}
const handleVisibilityChange = () => {
if (document.hidden) {
setAction('hide');
} else {
setAction('show');
}
};
useEffect(() => {
document.addEventListener('visibilitychange', handleVisibilityChange, false);
window.addEventListener(
'focus',
function() {
setAction('show');
},
false,
);
window.addEventListener('blur', function() {
setAction('hide');
}, false);
}, [visibilityChange]);
return <p></p>;
};
export default TabVisibilityComponent;
我尝试在 'lib.dom.d.ts' 文件的 Document 界面中添加 'readonly msHidden: boolean',因为 hidden 工作正常,而且它是在该文件中声明为只读布尔值,因此对 msHidden 和 webkitHidden 进行了相同的尝试,但它不起作用。我见过很多人使用这个代码,但不知道我的错误是什么。如果有人对此有解决方案会非常高兴!
【问题讨论】:
标签: javascript html reactjs typescript interface