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

(GTM) Issue with AdBlock detection fb pixel standard event parameter

当 AdBlock 为 enabled/disabled 时,我设法触发了一个 FB 标准事件。但是,我需要在页面中硬编码蜜罐和数据层推送脚本才能使其正常工作。在 GTM 中添加假 "ad_status.js" 文件和数据层推送脚本作为标签时,发送到标准事件的参数始终设置为 "true",即使 AdBlock 已禁用。

这是我的:

1 个 js 文件 "ad_status.js" 包含以下内容:

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

1 数据层变量 "AdBlocked" 其数据变量名称为 "blocked":

See screenshot

1 个名为 "AdbLock detection" 的自定义 HTML 标签:

<script>
  (function() {
    var d = document.createElement('script');
    d.src = '//www.mydomain.com/ad_status.js';
    document.head.appendChild(d);
  })();
</script>

1 个自定义 HTML 标记,在启用或禁用 AdBlock 时推送事件:

<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>

See screenshot

如有任何帮助,我们将不胜感激!

非常感谢。

你不需要那么多标签。您只需要:

  • 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>