首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax站点上的criteo标记

ajax站点上的criteo标记
EN

Stack Overflow用户
提问于 2018-02-20 14:09:19
回答 2查看 1.4K关注 0票数 2

我对将criteo标记集成到ajax网站有一个问题。当我发送我的第一次活动时,一切都很完美。

代码语言:javascript
复制
<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中不出现。

代码语言:javascript
复制
<script>
window.criteo_q.push(event_data);
</script>

有什么不对吗?

演示示例:https://jsfiddle.net/36jq9dLu/156/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-21 10:28:02

每次要触发新事件时,都应该以编程方式重新导入加载程序。这不会导致任何延迟,因为加载程序是由浏览器缓存的,但是因为它包含一些用于重新初始化criteo_q对象的代码,所以是必要的。您可以在每次事件触发之前添加以下行:

代码语言:javascript
复制
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 || [];

https://jsfiddle.net/36jq9dLu/199/

票数 3
EN

Stack Overflow用户

发布于 2018-02-21 09:02:10

为了使Criteo OneTag能够正确评估DOM更改后的事件,您应该使用requiresDOM参数将小部件设置为非阻塞模式。

代码语言:javascript
复制
...
  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);
...

下面的片段演示了这一点:

https://jsfiddle.net/yuxqrfev/5/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48887150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档