Можно ли знать, что Hotjar теперь загружен в JavaScript? - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу получить userId от Hotjar, но мне нужно убедиться, что Hotjar загружен. Как я могу привязать функцию к Hotjar loaded что-то вроде использования .then() для ожидания обещания.

<Hotjar Code>
.
.
.
<End of Hotjar Code>

let x = hj.globals.get('userId').split('-').shift()

Теперь я получаю ошибку TypeError: Cannot read property 'get' of undefined

1 Ответ

0 голосов
/ 19 февраля 2020

Ссылка на другой SO вопрос, который близок к вашему вопросу: Захват идентификатора пользователя Hotjar в Google Tag Manager и Google Analytics

В любом случае вы можете проверить, существует ли это свойство и является ли оно функцией , По крайней мере, так я решил.

Возможно, вам нужно подождать, пока DOM станет доступным:

document.addEventListener("DOMContentLoaded", function () {
    hj.globals.get('userId').split('-').shift()
};

Возможно, вам придется проверить, скрипт был загружен вообще.

if (window.hj && typeof (window.hj) === "function") {
    hj.globals.get('userId').split('-').shift()
}

Имея в виду и то, и другое, я бы, возможно, предложил следующий код, чтобы быть очень осторожным.

document.addEventListener("DOMContentLoaded", function () {
    if (window.hj && typeof (window.hj) === "function") {
        hj.globals.get('userId').split('-').shift()
    }
};
...