(GTM)AdBlock检测fb像素标准事件参数的问题

时间:2017-06-28 16:55:46

标签: jquery facebook google-tag-manager facebook-pixel

启用/禁用AdBlock时,我设法触发了FB标准事件。但是我需要在页面中对honeypot和dataLayer推送脚本进行硬编码以使其正常工作。添加假冒" ad_status.js" file和dataLayer将脚本作为GTM中的标记推送,发送到标准事件的参数始终设置为" true",即使禁用AdBlock也是如此。

这就是我所拥有的:

1 js file" ad_status.js"包含以下内容:

var e=document.createElement('div'); e.id='NGjRPgxAQCMZ'; 
e.style.display='none'; document.body.appendChild(e);

1数据层变量" AdBlocked"其数据变量名称为"被阻止":

  • 变量类型:数据层变量
  • 变量名称:已阻止

See screenshot

1个自定义HTML标记,称为" AdbLock检测":

<script>
  (function() {
    var d = document.createElement('script');
    d.src = '//www.mydomain.com/ad_status.js';
    document.head.appendChild(d);
  })();
</script>
  • 在所有页面上触发

启用或停用AdBlock时推送事件的1个自定义HTML代码:

<script type="text/javascript">// <![CDATA[
jQuery(document).ready(checkAds());
        function checkAds() {
            if (document.getElementById('NGjRPgxAQCMZ') != undefined) {
                document.write("<script>dataLayer.push({'event':'adBlock','blocked':'false'});</sc" + "ript>");
            } else {
                document.write("<script>dataLayer.push({'event':'adBlock','blocked':'true'});</sc" + "ript>");
            }
        }
// ]]></script>
  • 在所有页面上触发
  • 标记排序已设置,因此第二个标记在第一个标记之后触发。

1个带有fb标准事件的自定义HTML标记:

<script>
fbq('track', 'AdBlock', {
enabled: {{AdBlocked}}
});
</script>
  • 关注&#34;自定义事件&#34;满足:

See screenshot

任何帮助都会非常高兴!

非常感谢。

1 个答案:

答案 0 :(得分:0)

您不需要这么多标签。所有你需要的是:

  • ad_status.js添加到您的网站根文件夹
  • 使用PageView触发器
  • 创建自定义HTML标记

Html代码:

<script>
    var ERR_BLOCKED_BY_CLIENT = true;
    (function() {
        function checkAds(){
            var blocked = document.getElementById('NGjRPgxAQCMZ') == null;
            fbq('track', 'AdBlock', {
                enabled: blocked
            });
        }     
        var d = document.createElement('script');
        d.src = '/ad_status.js';
        document.head.appendChild(d);
        d.addEventListener('load', function() {
            ERR_BLOCKED_BY_CLIENT = false;
            checkAds()
        });
        setTimeout( function() {
            if (ERR_BLOCKED_BY_CLIENT)
            {
                checkAds();
            }
        },1000);
    })();
</script>