(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>
- 满足以下 "Custom Event" 时触发:
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>
当 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>
- 满足以下 "Custom Event" 时触发:
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>