测试是否加载了facebook像素id

时间:2017-03-24 06:11:48

标签: facebook

如果有人调用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>);
}

1 个答案:

答案 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开发者工具上的网络标签)