0

当像这样触发 GTM 标签时:

dataLayer.push({
        'event': 'gtm.trackEvent',
        'eventCategory': 'Offices',
        'eventAction': 'Search',
        'eventLabel': '1234AB',
        'eventNonInteraction': 1
});

同时还使用历史 API 更新 URL 栏,如下所示:

window.history.replaceState({}, '', '/offices?office=1234AB');

URL 栏的行为异常。会发生什么:

  1. URL 栏从当前状态开始(例如 /path?office=current-param
  2. URL 栏被 History API 替换(例如 /path?office=1234AB)
  3. 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 点切换)

  1. URL 栏从当前状态开始(例如 /path?office=current-param
  2. URL 栏被页面视图的第一个状态(例如 /path?param=first-state
  3. URL 栏被 History API 替换(例如 /path?office=1234AB)
4

0 回答 0