如何通过Google Tag Manager设置全站时长或连续页面访问触发规则?
实现全站停留时长/连续页面访问触发标签的方案
一、全站累计停留时长超过5分钟触发标签
由于单个页面的Timer触发器无法跨页面统计时长,需要通过本地存储(localStorage)累计用户在全站的停留时间,结合页面生命周期事件更新时长并检查触发条件:
- 初始化累计时长:页面加载时读取
localStorage中保存的累计时长,无记录则初始化为0。 - 精准统计单页停留时间:利用
visibilitychange事件监听页面可见状态,仅在页面处于活跃状态时计时,避免后台页面无效计时。 - 页面切换/卸载时保存时长:在页面切换(
visibilitychange切为隐藏)或卸载(beforeunload)时,将当前页面的停留时长累加到总时长并保存到localStorage。 - 检查触发条件:每次更新时长后,判断总时长是否达到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记录当前会话内的连续页面访问次数(会话结束后自动清空,符合“连续访问”的定义):
- 初始化访问计数:页面加载时读取
sessionStorage中的连续访问数,无记录则初始化为0,然后自增1(当前页面计入次数)。 - 检查触发条件:判断计数是否达到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
相关产品推荐
相关产品推荐

