我必须实现两个(新的)Facebook像素:一个是站点范围的,一个是仅在特定页面上。请求者要求每个像素仅跟踪其自己的相关标准事件。
像素1:
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '111');
fbq('track', 'PageView');
fbq('track', 'ViewContent');
</script>
像素2:
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '222');
fbq('track', 'PageView');
fbq('track', 'Lead');
</script>
Pixel 1不应接收任何潜在客户追踪数据,Pixel 2也不应接收任何ViewContent追踪数据。我如何实现这一目标?
答案 0 :(得分:0)
我在同样的问题上苦苦挣扎,似乎Facebook没有公开支持或记录这种功能。尽管在许多情况下它可能是必不可少的。
正如Jason FB所示,您可以重写de fbq函数以将像素ID作为参数。然而,我想在不必重写提供的fbq的情况下完成此任务:
以下是解决此问题的( 非正统 )代码:
function customFacebookTrack(id, eventName, object){
// If i get an ID i Simply delete the remanent IDs from de FBQ object.
if(typeof id != 'undefined' && id != 'ALL'){
var placePixels = [];
var currentPixels = fbq.getState().pixels;
//console.log(currentPixels);
for(i = 0; i < currentPixels.length; i++){
if(currentPixels[i].id != id){
placePixels.push(currentPixels[i]);
currentPixels.splice(i, i + 1);
}
}
}
//console.log(currentPixels);
// I send my event only with the pixel(s) I want
fbq('trackCustom', eventName, object);
// After sending the event I set back the deleted IDs for regular use.
if(typeof id != 'undefined' && id != 'ALL'){
for(i = 0; i < placePixels.length; i++){
if(placePixels[i].id != id){
currentPixels.push(placePixels[i]);
placePixels.splice(i, i + 1);
}
}
}
}
请注意,这不是任何建议的做法。这只是对Facebook事件跟踪javascript的已知限制的一种解决方法。
示例代码段:
<script>
customFacebookTrack(XXXXXXXXXXXXXXX, 'Lead Form', {content_name:'Newsletter Subscriber'});
</script>
答案 1 :(得分:0)
将两个跟踪事件与所有初始像素ID
放在一起<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '111');
fbq('init', '222');
fbq('track', 'PageView');
fbq('track', 'ViewContent');
fbq('track', 'Lead');
</script>