【问题标题】:Is that possible to be aware that Hotjar is now loaded in JavaScript?是否有可能知道 Hotjar 现在已在 JavaScript 中加载?
【发布时间】:2020-06-03 20:35:16
【问题描述】:

我想从 Hotjar 获取 userId,但我需要确保 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

【问题讨论】:

  • 嘿,您有机会试用window 解决方案吗?它对你有用还是你仍然需要回答你的问题?

标签: javascript hotjar


【解决方案1】:

引用另一个与您的问题相近的 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()
    }
};

【讨论】:

  • 感谢您的评论。这不是我要找的。我可以用这个条件检查if (hj.globals)。我想使用.then() 之类的东西来确保第一部分被添加,然后这部分发生。
  • 感谢您更新代码。我会检查并告诉你结果。
  • 很高兴!我试图了解你来自哪里以及想去哪里。我假设&lt;Hotjar Code&gt; 是您直接从hotjar 获得的hotjar 脚本。对吗?
  • 是的,完全正确。从 hotjar 获取的脚本。
  • @MohammadTaherian document.addEventListener('DOMContentLoaded') 有帮助吗?我还添加了另一个关于 SO 的问题,这似乎与您的问题非常接近。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多