Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在没有事件侦听器的情况下,使用GTM停止链接单击传播和更改href_Javascript_Google Tag Manager - Fatal编程技术网

Javascript 在没有事件侦听器的情况下,使用GTM停止链接单击传播和更改href

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标记代码

我正在使用Google Tag Manager在我的其他分析脚本中激发Facebook像素。在不涉及太多细节的情况下,我想做以下几点:

  • 无论何时单击链接并写入cookie,都有一个触发器。
    • 如果所述cookie已写入,则触发自定义html标记
  • 该自定义html标记将检查该链接是否为出站链接。
    • 如果链接是出站的:
    • 阻止链接传播
    • 然后根据是否已写入查询字符串,追加“?fb=1”或“&fb=1”
    • 然后重定向到带有附加字符串的新url
    • 若链接未出站,则不执行任何操作
  • 我的自定义html标记代码:

    
    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;
    }
    }
    其他的
    {
    //无所事事
    }
    }
    
    }
    为什么不在页面加载时触发此命令,然后更改所有链接,而不是尝试阻止链接传播?