如果有人调用facebook功能:
fbq('init', <pixel_id>)
对于相同的像素id不止一次,它会生成错误:
Facebook Pixel Error:重复的像素ID
this答案的解决方案是先使用
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id>)
}
但是我在同一页面上使用了多个pixel_ids。所以如果第一个像素id已经加载,这将不会加载第二个像素id。
有没有办法检查是否加载了特定像素,而不仅仅是加载了fbq?类似的东西:
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id>);
}
else {
if (!fbq.pixel_id)
fbq('init', <pixel_id>);
}
答案 0 :(得分:3)
你应该可以使用
fbq.getState().pixels[0]
识别已加载的像素。
然后你需要再次调用init函数,但是需要使用新的像素id
fbq('init', <pixel_id>);
然后你应该能够看到你加载了2个像素
fbq.getState().pixels.length
总之,要修改初始代码,我相信你想要的是:
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id1>);
}
else {
if (fbq.getState().pixels[0] === <pixel_id2>)
fbq('init', <pixel_id2>);
}
依此类推 - 您可以循环像素数组中的整个像素集合,以避免双重发布任何像素。
你甚至可以使用这个API来检查任何像素被触发的事件数量(虽然它没有被触发的事件)
fbq.getState().pixels[0].eventCount
如果您希望通过检查计数为零来确保只触发一次事件,这可能会有所帮助。
当您随后决定跟踪某个事件时,将针对所有像素触发此事件。
要验证此发送,请执行以下操作
fbq('track', 'PageView');
并检查两个像素的eventCount是否已增加。您应该能够看到两个像素的http请求也被触发(通过Chrome开发者工具上的网络标签)