jquery 如何从dataLayer对象获取值

q7solyqu  于 2023-05-06  发布在  jQuery
关注(0)|答案(6)|浏览(200)

我想从谷歌标签管理器的dataLayer对象中获取一些值。在chrome标签辅助中,我得到这样的值

[
  {
    "gtm.start": 1503053374849,
    "event": "gtm.js",
    "gtm.uniqueEventId": 0
  },
  {
    "event": "gtm.dom",
    "gtm.uniqueEventId": 1
  },
  {
    "event": "gtm.load",
    "gtm.uniqueEventId": 2
  },
  {
    "Linker": "_ga=53655374"
  }
]

我需要得到“链接器”值。我尝试了dataLayer[3].Linker,但它给了我“undefined”或blank,dataLayer[1].event也是如此(它是空白的,而不是返回值=“gtm.dom”)当我尝试dataLayer[0].event时,它返回正确的'gtm.js'
请帮助我如何获得“链接器”值

ikfrs5lh

ikfrs5lh1#

你可以通过google标签管理器javascript-api访问推送的数据。变量部分将是GTM容器的container-id。确保你的地址是正确的。

google_tag_manager['<container-id>'].dataLayer.get('gtm.start');
//result e.g.: 1210115541132

结果将是DataLayers状态的最后一个值

laawzig2

laawzig22#

在表格console.table(dataLayer);中打印数据层,并记下它将为Linker显示的index值。

然后,您可以使用dataLayer[XXX]作为XXX作为Linkerindex值。

wwodge7n

wwodge7n3#

实际上,你可以从下面的代码中获取dataLayer,只需调用getFromDataLayer('your_object_key_from_dataLayer');,然后你应该从dataLayer中获取值。您可以使用google_tag_manager['container_id'].dataLayer.get来获得相同的结果,但您的代码依赖于GTM容器ID。

function getFromDataLayer(key) { 
    let result = null; 
    dataLayer.push(function() { 
        let value = this.get(key);
        if (value) {
            result = value;
        }
    });
    return result;    
};
50pmv0ei

50pmv0ei4#

最好的方法是使用Google Tag Manager本身,这就是它的设计目的。为此,请转到GTM接口(tagmanager.google.com)并创建一个dataLayer类型的variable。然后,您可以在选择的标记中使用此变量,将其值传递给第三方系统。

dsf9zpds

dsf9zpds5#

我一直在寻找一个类似问题的答案,看到你还没有找到一个明确的解决方案。
我发现this article by Simo Ahava突出了从GTM访问对象变量时vanilla JS和GTM之间的差异。
所以根据那篇文章,你应该能够使用它并获得值:
dataLayer.3.Linker

bhmjp9jg

bhmjp9jg6#

获取GTM容器ID可能是一个问题,具体取决于环境和加载的容器数量。这是获取值的一种快速简便的方法。
google_tag_manager[Object.getOwnPropertyNames(window.google_tag_manager).filter(name => name.includes('GTM'))[0]].dataLayer.get('gtm.start');

相关问题