UNPKG

1.17 kBJavaScriptView Raw
1import document from "document"
2import isFunction from "lodash-es/isFunction"
3import MeasurementFramework from "./MeasurementFramework"
4
5/**
6 * Module let you run code at DOM Ready with a callback function.
7 *
8 * @param callback
9 * @returns {{domReadyLoaded: boolean}}
10 */
11const domReady = function (callback) {
12 if (isFunction(callback)) {
13 MeasurementFramework.register(function () {
14 let readyState = document.readyState
15 if (readyState === "complete" || readyState === "loaded" || readyState === "interactive") {
16 return callback()
17 } else if (isFunction(document.attachEvent)) {
18 document.attachEvent("onreadystatechange", function () {
19 if (readyState === "complete") {
20 return callback()
21 }
22 })
23 } else {
24 document.addEventListener("DOMContentLoaded", callback)
25 }
26 return {
27 "domReadyLoaded": true
28 }
29 })
30 } else {
31 console.warn("Measurement Framework DOM Ready callback must be a function.")
32 }
33}
34
35export default domReady
\No newline at end of file