From 2646f9d7fae6bf54e4f44f7a7d3d7cbbd72f060f Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Mon, 11 Jul 2022 19:05:23 +0800 Subject: [PATCH] refactor(core): use has instead of get to test for existence --- .../src/client/exports/ExecutionEnvironment.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/docusaurus/src/client/exports/ExecutionEnvironment.ts b/packages/docusaurus/src/client/exports/ExecutionEnvironment.ts index 7b2f0f3f1dd7..c988c44f3df1 100644 --- a/packages/docusaurus/src/client/exports/ExecutionEnvironment.ts +++ b/packages/docusaurus/src/client/exports/ExecutionEnvironment.ts @@ -5,23 +5,22 @@ * LICENSE file in the root directory of this source tree. */ -const canUseDOM = !!( +const canUseDOM = typeof window !== 'undefined' && - window.document && - window.document.createElement -); + 'document' in window && + 'createElement' in window.document; const ExecutionEnvironment = { canUseDOM, + // window.attachEvent is IE-specific; it's very likely Docusaurus won't work + // on IE anyway. canUseEventListeners: - // @ts-expect-error: window.attachEvent is IE specific. - // See https://github.com/Microsoft/TypeScript/issues/3953#issuecomment-123396830 - canUseDOM && !!(window.addEventListener || window.attachEvent), + canUseDOM && ('addEventListener' in window || 'attachEvent' in window), canUseIntersectionObserver: canUseDOM && 'IntersectionObserver' in window, - canUseViewport: canUseDOM && !!window.screen, + canUseViewport: canUseDOM && 'screen' in window, }; export default ExecutionEnvironment;