如果调用 facebook 函数:
fbq('init', <pixel_id>)
Run Code Online (Sandbox Code Playgroud)
对于相同的像素 id 不止一次,它会产生错误:
Facebook 像素错误:像素 ID 重复
这个答案的解决方案是首先使用
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id>)
}
Run Code Online (Sandbox Code Playgroud)
但是我在同一页面上使用了多个 pixel_ids。所以如果第一个像素 id 已经加载,这将不会加载第二个像素 id。
有没有办法检查是否加载了特定的 pixelid 而不仅仅是加载了 fbq?就像是:
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id>);
}
else {
if (!fbq.pixel_id)
fbq('init', <pixel_id>);
}
Run Code Online (Sandbox Code Playgroud)
你应该可以使用
fbq.getState().pixels[0]
Run Code Online (Sandbox Code Playgroud)
识别哪个像素已经加载。
然后您只需要再次调用 init 函数,但使用新的像素 ID
fbq('init', <pixel_id>);
Run Code Online (Sandbox Code Playgroud)
然后你应该能够看到你加载了 2 个像素
fbq.getState().pixels.length
Run Code Online (Sandbox Code Playgroud)
总之,要修改您的初始代码,我相信您想要的是:
if(typeof fbq === 'undefined') {
fbq('init', <pixel_id1>);
}
else {
if (fbq.getState().pixels[0] === <pixel_id2>)
fbq('init', <pixel_id2>);
}
Run Code Online (Sandbox Code Playgroud)
依此类推 - 您可以循环像素数组中的整个像素集合,以避免重复发布其中任何一个。
您甚至可以使用此 API 来检查任何像素触发了多少事件(尽管不是它触发了哪些事件),通过
fbq.getState().pixels[0].eventCount
Run Code Online (Sandbox Code Playgroud)
如果您想通过检查计数是否为零来确保只触发一次事件,这可能会有所帮助。
当您随后决定跟踪一个事件时,这将为所有像素触发。
要验证此发送,类似于以下内容
fbq('track', 'PageView');
Run Code Online (Sandbox Code Playgroud)
并检查两个像素的 eventCount 是否已增加。您也应该能够看到对两个像素的 http 请求也被触发(通过 Chrome 开发者工具上的网络选项卡)
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |