0

当启用/禁用 AdBlock 时,我设法触发了 FB 标准事件。但是,我需要在页面中硬编码蜜罐和 dataLayer 推送脚本才能使其工作。当在 GTM 中添加伪造的“ad_status.js”文件和 dataLayer 推送脚本作为标签时,发送到标准事件的参数始终设置为“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”:

  • 变量类型:数据层变量
  • 变量名:阻塞

看截图

1 个名为“AdbLock 检测”的自定义 HTML 标记:

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

1 个在启用或禁用 AdBlock 时推送事件的自定义 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>
  • 满足以下“自定义事件”时触发:

看截图

任何帮助都会非常高兴!

非常感谢。

4

1 回答 1

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>
于 2017-06-29T03:46:28.273 回答