首页 > 解决方案 > SPA 上的 Google 优化 JS API

问题描述

我的 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?非常感谢任何建议/想法。

谢谢!

标签: javascriptgoogle-tag-managergoogle-optimize

解决方案


我终于解决了!这是修复它的方法,也许这对其他人有帮助。

问题是回调函数 useVariant。我已经将它定义为useVariant(variantId)显然(感谢谷歌文档对此很清楚,不是)它必须是useVariant(variantId, experimentId)

因此,通过将回调函数更改为采用两个参数,代码将起作用。


推荐阅读