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

如何通过Google Tag Manager设置全站时长或连续页面访问触发规则?

实现全站停留时长/连续页面访问触发标签的方案

一、全站累计停留时长超过5分钟触发标签

由于单个页面的Timer触发器无法跨页面统计时长,需要通过本地存储(localStorage)累计用户在全站的停留时间,结合页面生命周期事件更新时长并检查触发条件:

  1. 初始化累计时长:页面加载时读取localStorage中保存的累计时长,无记录则初始化为0。
  2. 精准统计单页停留时间:利用visibilitychange事件监听页面可见状态,仅在页面处于活跃状态时计时,避免后台页面无效计时。
  3. 页面切换/卸载时保存时长:在页面切换(visibilitychange切为隐藏)或卸载(beforeunload)时,将当前页面的停留时长累加到总时长并保存到localStorage。
  4. 检查触发条件:每次更新时长后,判断总时长是否达到5分钟(300000毫秒),满足则触发标签,可选择重置累计时长避免重复触发。

示例代码:

let totalTimeSpent = parseInt(localStorage.getItem('totalSiteTime')) || 0;
let pageStartTime = Date.now();

// 页面可见性变化时更新时长
document.addEventListener('visibilitychange', () => {
  if (document.visibilityState === 'visible') {
    pageStartTime = Date.now();
  } else {
    const pageTime = Date.now() - pageStartTime;
    totalTimeSpent += pageTime;
    localStorage.setItem('totalSiteTime', totalTimeSpent);
    checkTimeTrigger();
  }
});

// 页面卸载前保存时长
window.addEventListener('beforeunload', () => {
  const pageTime = Date.now() - pageStartTime;
  totalTimeSpent += pageTime;
  localStorage.setItem('totalSiteTime', totalTimeSpent);
  checkTimeTrigger();
});

// 检查时长触发条件
function checkTimeTrigger() {
  const fiveMinutes = 5 * 60 * 1000;
  if (totalTimeSpent >= fiveMinutes) {
    // 替换为你的标签触发逻辑
    console.log('全站停留超5分钟,触发标签');
    // 可选:重置累计时长,避免同一会话重复触发
    localStorage.removeItem('totalSiteTime');
    totalTimeSpent = 0;
  }
}

// 页面加载时先检查一次
checkTimeTrigger();

二、连续访问10个页面触发标签

使用sessionStorage记录当前会话内的连续页面访问次数(会话结束后自动清空,符合“连续访问”的定义):

  1. 初始化访问计数:页面加载时读取sessionStorage中的连续访问数,无记录则初始化为0,然后自增1(当前页面计入次数)。
  2. 检查触发条件:判断计数是否达到10,满足则触发标签,可选择重置计数避免重复触发。

示例代码:

let consecutiveViews = parseInt(sessionStorage.getItem('consecutivePageViews')) || 0;
consecutiveViews += 1;
sessionStorage.setItem('consecutivePageViews', consecutiveViews);

// 检查页面访问触发条件
function checkViewTrigger() {
  if (consecutiveViews >= 10) {
    // 替换为你的标签触发逻辑
    console.log('连续访问10个页面,触发标签');
    // 可选:重置计数,避免同一会话重复触发
    sessionStorage.removeItem('consecutivePageViews');
    consecutiveViews = 0;
  }
}

// 页面加载时执行检查
checkViewTrigger();

注意事项

  • 存储选择:全站时长统计用localStorage(跨会话保留),连续页面访问用sessionStorage(仅当前会话有效)。
  • 计时准确性:visibilitychange事件比定时轮询更精准,能排除页面后台运行的无效时长。
  • 重复触发控制:根据业务需求决定是否重置计数/时长,若需多次触发可移除重置逻辑。
  • 隐私合规:确保存储行为符合当地隐私法规,必要时需获得用户同意。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:52:45