我有一个函数可以将点击的链接属性推送到 Google 标签管理器的 dataLayer。
https://developers.google.com/tag-manager/enhanced-ecommerce
问题是扩展程序“adguard”能够阻止此类跟踪。 在 adguard 中,它称为“所有已知计数器和分析系统的过滤器”。在阻止 dataLayer.push 的同时,它也会阻止 eventCallback 事件,并且链接不会打开。
这是函数:
function ga_promoTriggerClick(e)
{
var p_id = $(e).attr("data-id");
var p_name = $(e).attr("data-name");
var p_creation = $(e).attr("data-creation");
var p_pos = $(e).attr("data-pos");
dataLayer.push({
'event': 'promotionClick',
'ecommerce': {
'promoClick': {
'promotions': [
{
'id': p_id,
'name': p_name,
'creative': p_creation,
'position': p_pos
}]
}
},
'eventCallback': function()
{
var p_href = $(e).attr("href");
if(typeof p_href != "undefined")
{
document.location = $(e).attr("href");
}
}
});
}
如果“adguard”阻止了 dataLayer.push,我如何向用户发送链接?
一些想法:
- 错误/成功/失败函数,但它们都不存在。
- 设置超时 1 秒(这样用户就会有“滞后”)
- 检查 adguard 是否已打开(以某种方式),然后单击检查变量
感谢您的建议
最佳答案
对我有用的解决方案非常简单。我所需要的只是检查标签管理器是否工作。
<script type="text/javascript">
window.addEventListener('load', function()
{
if(window.ga && ga.create)
{
console.log('Google Analytics is loaded');
}
else
{
console.log('Google Analytics is not loaded');
}
if(window.google_tag_manager)
{
console.log('Google Tag Manager is loaded');
}
else
{
console.log('Google Tag Manager is not loaded');
}
}, false);
</script>
在这里找到解决方案:https://marthijnhoiting.com/detect-if-someone-is-blocking-google-analytics-or-google-tag-manager/
关于javascript - Adguard 会阻止 GTM 的 dataLayer.push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47676861/