javascript - 在 Google 跟踪代码管理器中使用 IF 条件和 querySelectors

标签 javascript google-tag-manager

问题

继续将“未定义”作为返回的 Google 标记管理器变量。

描述

我正在尝试编写一个自定义 JavaScript 变量来拉取 'data-name' IF 'data-form-title' 返回“”

我有一个正在尝试标记的网站,并且需要获取表单名称。问题出现了,一些表单的名称返回为“”,所以我想使用 IF/Then 逻辑来选择另一个属性(如果第一个属性返回为空)。

具有正确表单标题的表单 https://www.mcgeetoyotaofclaremont.com/popup-availability

具有空“”表单标题的表单(“给自己发送链接”)https://www.mcgeetoyotaofclaremont.com/vehicle-details/new-2020-toyota-yaris-hatchback-le-claremont-nh-id-33375400#

我尝试过的

我已经测试了两个查询选择器,它们都可以独立工作。当我尝试设置 IF 条件时遇到了问题。

我还尝试过 var answer = 'Unknown',然后根据条件将变量替换为 formtitledatatitle,这样脚本的函数中只有 1 个返回。

对于我来说,这似乎很简单,当我交叉检查其他示例(例如从函数中取出名称)时,它似乎应该可以正常工作。

当前代码

function() {

var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;

var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;


if (formtitle != ""){
    return formtitle;
    } else {
    return datatitle;
    }   
}

最佳答案

当我尝试在表单上运行当前代码时,出现错误:未捕获类型错误:无法读取未定义的属性“nodeValue”。此错误将使您的 GTM 函数每次都返回未定义。

问题似乎出在这行代码:

var datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;

没有data-name属性。因此,您要么需要确保尝试访问正确的属性,要么可以简单地将变量包围在 try-catch block 中,如下所示:

function() {
  var formtitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-form-title'].nodeValue;

  var datatitle = '';
  try{
    datatitle = document.querySelectorAll('form[data-form-title]')[0].attributes['data-name'].nodeValue;
  }catch(err){}


  if (formtitle != ""){
    return formtitle;
  } else {
    return datatitle;
  }   
}

关于javascript - 在 Google 跟踪代码管理器中使用 IF 条件和 querySelectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59275904/

相关文章:

javascript - Vuejs 显示/隐藏条件

javascript - 将对象数组转换为其属性的唯一组合数组

javascript - AngularJS:$scope.watch 不工作

google-analytics - GTM 链接多个触发器并将数据从一个标签传递到另一个标签

google-analytics - 谷歌分析和谷歌标签管理器 Cookie

google-analytics - Google 跟踪代码管理器和离线发送数据

javascript - 将客户端数据发送到另一台计算机

javascript - $.ajax 中未传递全局 js 变量

google-tag-manager - Google 标签管理器和页面加载性能 : does it reduces performance in PageSpeed Insights?

google-analytics - 避免 AdBlockers 阻止 Google Tag Manager