我想从Hotjar获取userId,但我需要确保Hotjar已加载。我如何依赖一个函数来等待Hotjar loaded,比如使用.then()来等待promise。
<Hotjar Code>
.
.
.
<End of Hotjar Code>
let x = hj.globals.get('userId').split('-').shift()现在我得到了错误TypeError: Cannot read property 'get' of undefined
发布于 2020-02-20 02:28:49
引用与您的问题相近的另一个SO问题:Capturing Hotjar User ID in 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()
}
};https://stackoverflow.com/questions/60304335
复制相似问题