You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在用户撤回同意时动态停止Hotjar的会话录制?

问题描述

我有一个使用Hotjar的单页应用(SPA),已在引导页脚本中加载Hotjar JavaScript代码:

<script>
    (function(h,o,t,j,a,r){
        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
        h._hjSettings={hjid:1234567,hjsv:6};
        a=o.getElementsByTagName('head')[0];
        r=o.createElement('script');r.async=1;
        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
        a.appendChild(r);
    })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
</script>

目前录制功能正常,可在Hotjar账户中查看用户活动记录。我期望实现类似Google Tag Manager的机制,在用户撤回同意时停止会话录制,但未在Hotjar官网找到相关文档。Hotjar隐私页面提及了同意管理,但合规资源页面未涉及该内容。我知道可在用户确认同意后再动态加载脚本,但无法找到单页应用加载后撤回同意时停止录制的优雅方案。Hotjar脚本加载后页面中会出现hj对象,其包含丰富的方法和属性,但无相关文档说明。请问能否使用hj对象动态停止录制?


解决方案

可以通过hj对象的内置方法实现用户撤回同意时停止录制,以下是具体实现方案:

1. 停止当前会话跟踪(核心方法)

调用hj('optOut')方法即可立即停止Hotjar的所有跟踪行为(包括会话录制、热图、表单分析等),同时会在浏览器本地存储中标记用户已选择退出,后续会话默认不会再启动跟踪。

代码示例:

// 用户触发撤回同意时执行此函数
function handleConsentRevocation() {
    if (window.hj) {
        hj('optOut');
    }
}

2. 彻底清理Hotjar实例(可选)

如果需要更彻底地清除Hotjar在页面中的残留影响,可以在调用optOut后执行以下清理操作:

function revokeHotjarTracking() {
    if (window.hj) {
        // 停止跟踪并标记用户退出
        hj('optOut');
        
        // 清除全局对象和本地存储标记
        delete window.hj;
        delete window._hjSettings;
        localStorage.removeItem('_hjUserId');
        localStorage.removeItem('_hjRecordingEnabled');
        
        // 移除页面中Hotjar的脚本元素
        const hotjarScripts = document.querySelectorAll('script[src*="hotjar"]');
        hotjarScripts.forEach(script => script.remove());
    }
}

3. SPA场景的适配注意事项

  • 路由切换无需额外处理:用户执行optOut后,Hotjar不会在SPA路由切换时自动重新初始化跟踪,后续页面交互不会被记录。
  • 重新同意时恢复跟踪:如果用户后续重新同意数据收集,需要重新初始化Hotjar并调用hj('optIn')恢复跟踪:
    function initHotjarAfterConsent() {
        if (!window.hj) {
            // 重新加载Hotjar脚本
            (function(h,o,t,j,a,r){
                h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
                h._hjSettings={hjid:1234567,hjsv:6};
                a=o.getElementsByTagName('head')[0];
                r=o.createElement('script');r.async=1;
                r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
                a.appendChild(r);
            })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
            
            // 启用跟踪
            hj('optIn');
        }
    }
    

补充说明

optOut和optIn是Hotjar为隐私合规场景提供的内置方法,尽管官方文档未详细公开所有hj对象方法,但这两个方法在实际生产环境中是稳定可靠的,可用于处理用户同意状态的动态切换。


内容的提问来源于stack exchange,提问作者Paul Suart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:05:32