我的 SPA 上的 Google Optimize JS API 有问题,回调仅在页面重新加载时运行,但是在向后和转发到特定页面时,回调没有运行。这是场景:
1) 我重新加载应用程序并转到我的页面进行 A/B 测试:mysite.com/testpage
2)正在运行以下代码:
gtag('event', 'optimize.callback', {
name: experimentId,
callback: useVariant,
});
并被useVariant(variantId)
称为设置正确的variantId。
3) 我单击或导航离开该页面,然后单击/导航回到 mysite.com/testpage,这是一个 SPA,请注意。
4)gtag()
代码被重新调用,但回调useVariant()
没有被运行。
5)WTF。
6)如果我使用 CMD+R 重新加载页面(是的,我使用的是 Mac),代码将按照第 1 点运行)并且一切正常。
我尝试了以下方法:
A. 使用重置数据层google_tag_manager['xxx'].datalayer.reset()
B. 使用未定义的回调重新推送事件gtag('event', 'optimize.callback', undefined)
C. 重置datalayer = [] manually
D.optimize.callback
从数据层中移除事件
E. 以上的任意组合(有时会产生一些有趣的结果)
所以问题在第5点:WTF?非常感谢任何建议/想法。
谢谢!