首页 > 解决方案 > 如何在 GTM 中使用自定义变量

问题描述

仅当页面包含特定图像名称时,我才使用 GTM 触发 Google Analytics。为此,我将用户定义变量用作 mll_banner 并在其中使用了自定义 javascript。我的自定义javascript如下。


function () {
        var mllBanner = document.querySelectorAll('[class="p-panel p-p-b-lg position-left-top style-repeatx"]')[0].style.backgroundImage;
        if (mllBanner === "url(\"/clientimg/schneider-electric/LOResource/a23d051e-55ca-4b40-88a7-90c8768e167d_coverImage.png\")") {
          alert("Return is True");  
          return true;            
        }
        else {
          alert("Return is False");
          return false;
        }
    }

如果我将上述代码作为具有正确 JS 函数名称的通用 JS 运行,它可以在浏览器控制台上运行并返回 true 作为值。当我试图在 GTM 中使用它并想要验证它是否可以触发我使用的触发器时,如下所示,

扳机

我的触发器配置

这既不会触发真也不会触发假,但如果我让它不等于,那么它会同时触发两者。

谁能帮助如何在 GTM 中将 Javascript 用于用户定义的变量并将该变量用于触发器?先感谢您!

标签: javascriptgoogle-tag-manager

解决方案


如果您在页面视图中使用此变量,则它既不是true,也不是false,而是undefined。这是因为您尝试在呈现 DOM 之前访问 DOM 元素的属性(这意味着您的 queryselector 将返回 null,并且 null 没有样式属性)。

我不得不承认这是一个有根据的猜测,并假设一个标准的 GTM 安装(即页面头部的片段),但是你可以进入预览模式并在窗口加载事件中检查变量的值。

我还建议您不要使用查询选择器,而是使用 GTM 的内置 DOM 变量类型,因为这样您就可以独立于函数的其余部分来调试 DOM 元素。

此外,丢失 GTM 内的警报呼叫。


推荐阅读