[英]Google Tag Manager Custom JavaScript
我正在嘗試設置Google標記管理器變量以讀取URL參數(如果存在),如果不存在,請檢查該變量是否存在於數據層中,如果不存在則返回false。
但是,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
}
}
如果將其分為兩個Custom JS變量,則可能會更好,因為您沒有操作全局變量:
變量1:getParameterByName:
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:testDataLayer:
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
}
}
嘗試使用此代碼(您需要輸入腳本標簽):
<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;
}
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.