我想为 GTM(以及 GA4)取消设置/重置
page_location
。
将
page_location
推送到 dataLayer 后,我想为后续事件恢复到默认的 page_location (即当前 URL)(这是一个单页面应用程序,因此 URL 会发生变化)。
我的理解是
dataLayer.push({page_location:undefined})
应该这样做,但是尽管 page_location
在数据层中显示为未定义(根据控制台调试器和 Tag Assistant),但我的 GA4 代码的 GTM 调用使用旧值。 当我将调用中的 undefined
替换为 'test'
时,这实际上有效,并且使用了新值。
我尝试过调用
reset
的几种变体,但它们没有做任何事情。
我几乎不想提它,冒着转移对问题注意力的风险,但为了完整起见,在 GTM 中,我们定义了一个 GA4 事件标记,用于分配事件参数
page_location
,该参数从 {{dlv_page_location} 获取因此,如果 dataLayer 中未设置 page_location,则标记将使用默认 URL 位置。 除了上面的情况之外,这工作得很好,我们试图取消/重置数据层值。
经过几个小时的实验,我确定
page_location
是一种特殊情况,必须缓存在GTM代码本身的某个地方。
我可以通过
undefined
取消设置其他数据层变量,但不能通过 page_location
。
由于
reset
的任何变体似乎都无济于事,我什至设置了 dataLayer.length = 1
(它对其他变量有效),但它对原始 page_location
设置没有任何作用。
此时
page_location
根据页面控制台调试器不在dataLayer中,根据TagAssistant也不在dataLayer中。 一旦你设置了它,它显然就无法取消设置,因此你必须继续显式设置它(在 SPA 中),而不是让 GTM 从当前 URL 获取它。