ajax 网站上的 criteo 标签
criteo tags on ajax site
我在将 criteo 标签集成到我的 ajax 网站时遇到问题。
当我发送我的第一个事件时,一切都完美无缺。
<script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script>
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(event_data);
</script>
但是当我尝试在不重新加载页面的情况下将另一个事件发送到 criteo 时,它不起作用。 criteo 中没有出现事件。
<script>
window.criteo_q.push(event_data);
</script>
知道哪里出了问题吗?
为了让 Criteo OneTag 在 DOM-change 之后正确评估事件,您应该使用 requiresDOM 参数将小部件设置为 non-blocking 模式。
...
events = [
{ event: 'setAccount', account: 123456 },
{ event: 'setHashedEmail', email: '1234567890asdf' },
{ event: 'setSiteType', type: 'd' },
{ event: 'viewHome' },
{ requiresDOM: "non-blocking", cb:
$(document.body).on("page:changed", function() {
product_event =
[
{ event: 'setAccount', account: 123456 },
{ event: 'setHashedEmail', email: '1234567890asdf' },
{ event: 'setSiteType', type: 'd' },
{ event: "viewItem", product: 123 }
]
criteo_q.push(product_event)
})
}
]
window.criteo_q.push(events);
...
以下代码片段演示了这一点:
您应该在每次要触发新事件时以编程方式重新导入加载程序。这不会导致任何延迟,因为加载程序由浏览器缓存,但这是必需的,因为它包含一些可用于重新初始化 criteo_q
对象的代码。您可以在每次事件触发前添加以下行:
window.criteo_q = undefined;
script = document.createElement('script');
script.src = '//static.criteo.net/js/ld/ld.js';
script.async = 'true'
document.head.appendChild(script);
window.criteo_q = window.criteo_q || [];
我在将 criteo 标签集成到我的 ajax 网站时遇到问题。 当我发送我的第一个事件时,一切都完美无缺。
<script type="text/javascript" src="//static.criteo.net/js/ld/ld.js" async="true"></script>
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
window.criteo_q.push(event_data);
</script>
但是当我尝试在不重新加载页面的情况下将另一个事件发送到 criteo 时,它不起作用。 criteo 中没有出现事件。
<script>
window.criteo_q.push(event_data);
</script>
知道哪里出了问题吗?
为了让 Criteo OneTag 在 DOM-change 之后正确评估事件,您应该使用 requiresDOM 参数将小部件设置为 non-blocking 模式。
...
events = [
{ event: 'setAccount', account: 123456 },
{ event: 'setHashedEmail', email: '1234567890asdf' },
{ event: 'setSiteType', type: 'd' },
{ event: 'viewHome' },
{ requiresDOM: "non-blocking", cb:
$(document.body).on("page:changed", function() {
product_event =
[
{ event: 'setAccount', account: 123456 },
{ event: 'setHashedEmail', email: '1234567890asdf' },
{ event: 'setSiteType', type: 'd' },
{ event: "viewItem", product: 123 }
]
criteo_q.push(product_event)
})
}
]
window.criteo_q.push(events);
...
以下代码片段演示了这一点:
您应该在每次要触发新事件时以编程方式重新导入加载程序。这不会导致任何延迟,因为加载程序由浏览器缓存,但这是必需的,因为它包含一些可用于重新初始化 criteo_q
对象的代码。您可以在每次事件触发前添加以下行:
window.criteo_q = undefined;
script = document.createElement('script');
script.src = '//static.criteo.net/js/ld/ld.js';
script.async = 'true'
document.head.appendChild(script);
window.criteo_q = window.criteo_q || [];