Google 标签管理器自定义 JavaScript
Google Tag Manager Custom JavaScript
我正在尝试设置一个 Google 标签管理器变量来读取 URL 参数(如果存在),如果不存在,请检查该变量是否存在于数据层中,如果不存在 return假的。
但是,GTM 给出了一个解析错误,指出缺少“)”。任何帮助将不胜感激,不确定这是我的代码还是 GTM 是否需要特定语法?
function getParameterByName(name) {
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function () {
var hid = getParameterByName('hid').length();
if (hid > -1) {
return getParameterByName('hid');
}
else
if (dataLayer[0].emailHash.length >-1) {
return dataLayer[0].emailHash;
}
else
{
return false
}
}
尝试使用此代码(您需要输入脚本标签):
<script type="text/javascript">
(function (){
function getParameterByName(name) {
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var hid = getParameterByName('hid').length();
if (hid > -1) {
return getParameterByName('hid');
} else if (dataLayer[0].emailHash.length > -1) {
return dataLayer[0].emailHash;
} else {
return false;
}
})();
如果您将它分成两个自定义 JS 变量,这可能会更好,因为您没有操纵全局变量:
变量#1:
获取参数名称:
function() {
return function (name){
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
}
变量#2:
测试数据层:
function () {
var fn_getParameterByName = {{getParameterByName}};
var hid = fn_getParameterByName('hid');
if (hid.length > -1) {
return fn_getParameterByName ('hid');
}
else
if (dataLayer[0].emailHash.length >-1) {
return dataLayer[0].emailHash;
}
else
{
return false
}
}
我正在尝试设置一个 Google 标签管理器变量来读取 URL 参数(如果存在),如果不存在,请检查该变量是否存在于数据层中,如果不存在 return假的。
但是,GTM 给出了一个解析错误,指出缺少“)”。任何帮助将不胜感激,不确定这是我的代码还是 GTM 是否需要特定语法?
function getParameterByName(name) {
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function () {
var hid = getParameterByName('hid').length();
if (hid > -1) {
return getParameterByName('hid');
}
else
if (dataLayer[0].emailHash.length >-1) {
return dataLayer[0].emailHash;
}
else
{
return false
}
}
尝试使用此代码(您需要输入脚本标签):
<script type="text/javascript">
(function (){
function getParameterByName(name) {
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var hid = getParameterByName('hid').length();
if (hid > -1) {
return getParameterByName('hid');
} else if (dataLayer[0].emailHash.length > -1) {
return dataLayer[0].emailHash;
} else {
return false;
}
})();
如果您将它分成两个自定义 JS 变量,这可能会更好,因为您没有操纵全局变量:
变量#1: 获取参数名称:
function() {
return function (name){
name = name.replace(/[\[]/, "\[").replace(/[\]]/, "\]");
var regex = new RegExp("[\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
}
变量#2: 测试数据层:
function () {
var fn_getParameterByName = {{getParameterByName}};
var hid = fn_getParameterByName('hid');
if (hid.length > -1) {
return fn_getParameterByName ('hid');
}
else
if (dataLayer[0].emailHash.length >-1) {
return dataLayer[0].emailHash;
}
else
{
return false
}
}