diff options
author | alpadev <2838324+alpadev@users.noreply.github.com> | 2021-06-22 20:19:55 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-22 20:19:55 +0300 |
commit | 4927388197a3a2b1b041dce1be513c4cc5c39d22 (patch) | |
tree | 120b680784a8daf2f5d44f071b35fdb8045f699b /js/src/util | |
parent | 56b000474c5b0418bee1361f273f8354b531c720 (diff) |
Register only one `DOMContentLoaded` event listener in `onDOMContentLoaded` (#34158)
* refactor: reuse one DOMContentLoaded event listener in onDOMContentLoaded function
Instead of adding an event listener everytime the utility function is called, cache the callbacks and execute them all at once.
* refactor: drop iife for onDOMContentLoaded
Co-authored-by: XhmikosR <xhmikosr@gmail.com>
Diffstat (limited to 'js/src/util')
-rw-r--r-- | js/src/util/index.js | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/js/src/util/index.js b/js/src/util/index.js index 6edfaa580d..064b4e9431 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -201,9 +201,18 @@ const getjQuery = () => { return null } +const DOMContentLoadedCallbacks = [] + const onDOMContentLoaded = callback => { if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', callback) + // add listener on the first call when the document is in loading state + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + DOMContentLoadedCallbacks.forEach(callback => callback()) + }) + } + + DOMContentLoadedCallbacks.push(callback) } else { callback() } |