当像这样触发 GTM 标签时:
dataLayer.push({
'event': 'gtm.trackEvent',
'eventCategory': 'Offices',
'eventAction': 'Search',
'eventLabel': '1234AB',
'eventNonInteraction': 1
});
同时还使用历史 API 更新 URL 栏,如下所示:
window.history.replaceState({}, '', '/offices?office=1234AB');
URL 栏的行为异常。会发生什么:
- URL 栏从当前状态开始(例如 /path?office=current-param
- URL 栏被 History API 替换(例如 /path?office=1234AB)
- URL 栏被页面视图的第一个状态(例如 /path?param=first-state
第三部分不发生的唯一方法是当我禁用/评论 GTM 标签时。因此,我假设 GTM 不能很好地处理带有 History API 的状态。
我想知道是否有可能禁用 GTM 中的 History API 发生的任何事情。
更新
使用该eventCallback
属性,我可以确保无论何时触发事件,之后总是会调用历史记录 replaceState,这会导致正确的结束状态 (/path?office=1234AB)。我现在拥有的代码是:
dataLayer.push({
'event': 'gtm.trackEvent',
'eventCategory': 'Offices',
'eventAction': 'Search',
'eventLabel': '1234AB',
'eventNonInteraction': 1,
'eventCallback': function() {
window.history.replaceState({}, '', '/offices?office=1234AB');
}
});
我仍然看到从原始状态跳转到新状态:(第 2 点和第 3 点切换)
- URL 栏从当前状态开始(例如 /path?office=current-param
- URL 栏被页面视图的第一个状态(例如 /path?param=first-state
- URL 栏被 History API 替换(例如 /path?office=1234AB)