Javascript 在没有事件侦听器的情况下,使用GTM停止链接单击传播和更改href
我正在使用Google Tag Manager在我的其他分析脚本中激发Facebook像素。在不涉及太多细节的情况下,我想做以下几点:Javascript 在没有事件侦听器的情况下,使用GTM停止链接单击传播和更改href,javascript,google-tag-manager,Javascript,Google Tag Manager,我正在使用Google Tag Manager在我的其他分析脚本中激发Facebook像素。在不涉及太多细节的情况下,我想做以下几点: 无论何时单击链接并写入cookie,都有一个触发器。 如果所述cookie已写入,则触发自定义html标记 该自定义html标记将检查该链接是否为出站链接。 如果链接是出站的: 阻止链接传播 然后根据是否已写入查询字符串,追加“?fb=1”或“&fb=1” 然后重定向到带有附加字符串的新url 若链接未出站,则不执行任何操作 我的自定义html标记代码
- 如果所述cookie已写入,则触发自定义html标记
- 如果链接是出站的:
- 阻止链接传播
- 然后根据是否已写入查询字符串,追加“?fb=1”或“&fb=1”李>
- 然后重定向到带有附加字符串的新url
var-element={{Click-element}};;
var linkclickurl='{{clickurl}}';
警报('Click URL为'+linkclickurl+'。主机名为{{Page Hostname}}');
//检查linkclickurl中是否包含主机名
if(linkclickurl.indexOf(“{{Page Hostname}”)>-1){
警报(“非出站链接”);
}
否则{
//检查查询字符串是否已经存在
if(linkclickurl.indexOf(“?”>-1){
window.location.href=linkclickurl+'&fb=1';
警报(“发现查询”);
}
否则{
window.location.href=linkclickurl+'?fb=1';
警报(“未找到任何查询”);
}
}
接受@sdhaus的建议,我可以通过以下脚本完成此操作:
函数更新链接(参数、值)
{
var links=document.getElementsByTagName('a');
var includeDomains=self.location.host;
for(var i=0;i 1)//具有查询字符串参数
{
queryStringComplete=“?”;
var fullQString=linkParts[1];
var paramArray=fullQString.split(“&”);
var=false;
对于(j=0;j 0)
queryStringComplete=queryStringComplete+“&”;
如果(currentParameter[0]==parameter)//参数存在于url中,则刷新值
{
queryStringComplete=queryStringComplete+参数+“=”+值;
发现=真;
}
其他的
{
queryStringComplete=queryStringComplete+paramArray[j];//不相关的参数-重新包含在url中
}
paramCount++;
}
if(!found)//将新参数添加到查询字符串的末尾
queryStringComplete=queryStringComplete+“&”+参数+“=”+值;
}
其他的
{
queryStringComplete=“?”+参数+“=”+值;
}
links[i].href=links[i].href.split(“?”[0]+queryStringComplete;
}
}
其他的
{
//无所事事
}
}
}
为什么不在页面加载时触发此命令,然后更改所有链接,而不是尝试阻止链接传播?