Facebook像素:按像素ID分隔标准事件
Facebook Pixels: Separate standard events by pixel ID
我必须实现两个(新的)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不应接收任何Lead跟踪数据,Pixel 2不应接收到任何ViewContent跟踪数据。我该如何做到这一点?
我自己也遇到了同样的问题,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>
只需将both跟踪事件与所有初始像素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>
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 如何使线条的边缘像素保持半透明
- 画布:逐像素绘制图像并请求动画帧计时
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- javascript mootools平滑滚动'x'像素数量
- 逐像素碰撞检测弹球
- 获取图像的平均外部像素颜色
- 如何根据分辨率添加像素
- 仅当窗口宽度>940像素,无论是通过页面加载还是调整大小
- 使用画布在秒内逐像素显示图片
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 如何将像素添加到元素的当前位置
- GridStack项的高度和宽度(以像素为单位)
- 在用户用动画滚动175像素后缩小固定的Div
- CSS将百分比转换为像素
- 滚动到..如何滚动到#上方一定数量的像素
- Facebook像素:按像素ID分隔标准事件