当像这样触发GTM标签时:
dataLayer.push({
'event': 'gtm.trackEvent',
'eventCategory': 'Offices',
'eventAction': 'Search',
'eventLabel': '1234AB',
'eventNonInteraction': 1
});
同时还使用历史记录API更新网址栏,如下所示:
window.history.replaceState({}, '', '/offices?office=1234AB');
网址栏意外行为。会发生什么:
第三部分没有出现的唯一方法是禁用/评论GTM标签。因此我假设GTM不能很好地处理History API的状态。
我想知道是否有可能禁用GTM中历史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点切换)