Javascript 如何在一个网页上放置多个Facebook跟踪像素?

Javascript 如何在一个网页上放置多个Facebook跟踪像素?,javascript,facebook,Javascript,Facebook,我们正在尝试使用Facebook的广告跟踪像素来跟踪广告。 我们查看了Facebook的文档,这让我不知所措 我需要知道如何在一个页面上触发多个Facebook像素,因为我们有多个广告在运行 我把它给我的每像素代码放在页面上,然后我们有一个购物车页面,我在其中启动或添加“购买”事件。但由于我有3次剧本,它似乎发射了3次。我希望它每像素发射一次 这就是我到目前为止所做的: <!-- Facebook Pixel Code - Ad 1--> <script> !func

我们正在尝试使用Facebook的广告跟踪像素来跟踪广告。 我们查看了Facebook的文档,这让我不知所措

我需要知道如何在一个页面上触发多个Facebook像素,因为我们有多个广告在运行

我把它给我的每像素代码放在页面上,然后我们有一个购物车页面,我在其中启动或添加“购买”事件。但由于我有3次剧本,它似乎发射了3次。我希望它每像素发射一次

这就是我到目前为止所做的:

<!-- Facebook Pixel Code - Ad 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','//connect.facebook.net/en_US/fbevents.js');

 fbq('init', 'xxxxxxxxxxxxx12');
 fbq('track', "PageView");
 // Purchase
 // Track purchases or checkout flow completions (ex. landing on "Thank You" or confirmation page)
 fbq('track', 'Purchase', {value: '1.00', currency: 'USD'});
 </script>
 <noscript><img height="1" width="1" style="display:none"
 src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx12&ev=PageView&noscript=1"
  /></noscript>
<!-- End Facebook Pixel Code -->

 <!-- Facebook Pixel Code - Ad 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','//connect.facebook.net/en_US/fbevents.js');

 fbq('init', 'xxxxxxxxxxxxx34');
 fbq('track', "PageView");
 // Purchase
 // Track purchases or checkout flow completions (ex. landing on "Thank You" or confirmation page)
 fbq('track', 'Purchase', {value: '1.00', currency: 'USD'});

 </script>
 <noscript><img height="1" width="1" style="display:none"
 src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx34&ev=PageView&noscript=1"
  /></noscript>
<!-- End Facebook Pixel Code -->

 <!-- Facebook Pixel Code - Ad 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','//connect.facebook.net/en_US/fbevents.js');

 fbq('init', 'xxxxxxxxxxxxx56');
 fbq('track', "PageView");
 // Purchase
 // Track purchases or checkout flow completions (ex. landing on "Thank You" or confirmation page)
 fbq('track', 'Purchase', {value: '1.00', currency: 'USD'});
 </script>
 <noscript><img height="1" width="1" style="display:none"
 src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx56&ev=PageView&noscript=1"
  /></noscript>
<!-- End Facebook Pixel Code -->

!函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod?
n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n;
n、 push=n;n.load=!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)}(窗口,
文档,'script','//connect.facebook.net/en_US/fbevents.js');
fbq(“初始”、“XXXXXXXXXXXX 12”);
fbq(“轨迹”、“页面视图”);
//购买
//跟踪购买或结帐流程完成情况(例如登录“谢谢”或确认页面)
fbq(‘追踪’、‘购买’、{价值:'1.00',货币:'USD'});
!函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod?
n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n;
n、 push=n;n.load=!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)}(窗口,
文档,'script','//connect.facebook.net/en_US/fbevents.js');
fbq(“初始”、“XXXXXXXXXXXX 34”);
fbq(“轨迹”、“页面视图”);
//购买
//跟踪购买或结帐流程完成情况(例如登录“谢谢”或确认页面)
fbq(‘追踪’、‘购买’、{价值:'1.00',货币:'USD'});
!函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod?
n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n;
n、 push=n;n.load=!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)}(窗口,
文档,'script','//connect.facebook.net/en_US/fbevents.js');
fbq(“初始”,“XXXXXXXXXXXX 56”);
fbq(“轨迹”、“页面视图”);
//购买
//跟踪购买或结帐流程完成情况(例如登录“谢谢”或确认页面)
fbq(‘追踪’、‘购买’、{价值:'1.00',货币:'USD'});
这样做吗?或者我是否需要做一些不同的事情,这样购买事件就不会被炒4次。我正在使用用于Chrome的FB Pixel Helper插件来确保所有像素都处于激活状态,但我得到一个错误,它们正在激活多次

我会这样做吗?

 <!-- Facebook Pixel Code - ALL ADS-->
 <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','//connect.facebook.net/en_US/fbevents.js');

 fbq('init', 'xxxxxxxxxxxxx12');
 fbq('init', 'xxxxxxxxxxxxx34');
 fbq('init', 'xxxxxxxxxxxxx56');
 fbq('track', "PageView");
 // Purchase
 // Track purchases or checkout flow completions (ex. landing on "Thank You" or confirmation page)
 fbq('track', 'Purchase', {value: '1.00', currency: 'USD'});
 </script>
 <noscript><img height="1" width="1" style="display:none"
 src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx12&ev=PageView&noscript=1"
  /></noscript>
<!-- End Facebook Pixel Code -->

!函数(f,b,e,v,n,t,s){if(f.fbq)返回;n=f.fbq=function(){n.callMethod?
n、 callMethod.apply(n,参数):n.queue.push(参数)};如果(!f._fbq)f._fbq=n;
n、 push=n;n.load=!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)}(窗口,
文档,'script','//connect.facebook.net/en_US/fbevents.js');
fbq(“初始”、“XXXXXXXXXXXX 12”);
fbq(“初始”、“XXXXXXXXXXXX 34”);
fbq(“初始”,“XXXXXXXXXXXX 56”);
fbq(“轨迹”、“页面视图”);
//购买
//跟踪购买或结帐流程完成情况(例如登录“谢谢”或确认页面)
fbq(‘追踪’、‘购买’、{价值:'1.00',货币:'USD'});

我遇到了同样的问题,我在任何地方都找不到解决方案。我深入研究了代码,找到了一种可以使用的方法,叫做“addPixelId”。在我的测试中,您可以在“init”之后使用它,这将添加第二个ID。您跟踪的任何事件现在都将发送到这两个ID。例如:

fbq('init', 'xxxxxxxxxxxxx12');
fbq('addPixelId', 'xxxxxxxxxxxxx34');
fbq('addPixelId', 'xxxxxxxxxxxxx56');
fbq('track', 'PageView');

唯一需要注意的是,您跟踪的任何事件都将针对您定义的所有ID进行跟踪。这对我来说非常好,没有任何问题。

问题是Facebook像素代码/初始化可能需要一点时间才能加载,更不用说用户的连接和设备也会影响初始化时间

您不希望将代码粘贴三次

首先调用引用
fbevents.JS
库的核心FB JS像素代码

!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');
然后创建像素ID数组

// Array of FB PixelIDs
var pixel_ids = ['xxx111','xxx222'];
迭代数组,并以较小的延迟调用每个像素初始化。我会调整它以满足你的需要。您需要使用闭包函数来确保为数组指定了正确的值

// Iterate over the ids and ensure each one is initialized
for (var i = 1; i <= pixel_ids.length; i++){
  // Add delay here to allow each pixel to instantiate
  setTimeout(function(x) { return function() {fbq('init',x.toString());};
    }(pixel_ids[i-1]), 33*i);
}
为了更好地测量,为每个像素设置一个HTML无脚本调用
PageView

<noscript><img height="1" width="1" style="display:none"   
src="https://www.facebook.com/tr?id=xxx111&ev=PageView&noscript=1"/>
</noscript>
<noscript><img height="1" width="1" style="display:none"   
src="https://www.facebook.com/tr?id=xxx2222&ev=PageView&noscript=1"/>
</noscript>


激发的事件数应等于您拥有的像素数乘以事件数(即,为每个像素注册的每个事件)。。。如果实现正确,就不会出现错误。

只需将此代码放在一个JS文件中: //Facebook多像素

    (function() {
        var fbq = (function() {
            function fbq()
            {
                if(arguments.length > 0) {
                    var action, pixel_id, type_track, content_obj;

                if( typeof arguments[0] == "string") action = arguments[0];
                if( typeof arguments[1] == "string") pixel_id = arguments[1];
                if( typeof arguments[2] == "string") type_track = arguments[2];
                if( typeof arguments[3] == "object") content_obj = arguments[3];

                var params = [];
                if(typeof action == "string" && action.replace(/\s+/gi, "") != "" && 
                   typeof pixel_id == "string" && pixel_id.replace(/\s+/gi, "") != "" &&
                   typeof type_track == "string" && type_track.replace(/\s+/gi, "")) {

                    params.push("id=" + encodeURIComponent(pixel_id));
                    switch(type_track) {
                        case "PageView":
                        case "ViewContent":
                        case "Search":
                        case "AddToCart":
                        case "InitiateCheckout":
                        case "AddPaymentInfo":
                        case "Lead":
                        case "CompleteRegistration":
                        case "Purchase":
                        case "AddToWishlist":
                            params.push("ev=" + encodeURIComponent(type_track));
                            break;
                        default:
                            return;
                    }

                    params.push("dl=" + encodeURIComponent(document.location.href));
                    params.push("rl=" + encodeURIComponent(document.referrer));
                    params.push("if=false");
                    params.push("ts=" + new Date().getTime());

                    if(typeof content_obj == "object") {
                        for(var u in content_obj) {
                            if(typeof content_obj[u] == "object" && content_obj[u] instanceof Array) {
                                if(content_obj[u].length > 0) {
                                    for(var y=0; y<content_obj[u].length; y++) { content_obj[u][y] = (content_obj[u][y]+"").replace(/^\s+|\s+$/gi, "").replace(/\s+/gi," ").replace(/,/gi, "§"); }
                                    params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u].join(",").replace(/^/gi, "[\"").replace(/$/gi, "\"]").replace(/,/gi, "\",\"").replace(/§/gi, "\,")));
                                }
                            }
                            else if(typeof content_obj[u] == "string")
                                params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u]));
                        }
                    }

                    params.push("v=" + encodeURIComponent("2.5.0"));                                

                    if(typeof window.jQuery == "function") {
                        var iframe_id = new Date().getTime();
                        jQuery("body").append("<img height='1' width='1' style='display:none;width:1px;height:1px;' id='fb_" + iframe_id + "' src='https://www.facebook.com/tr/?" + params.join("&") + "' />");
                        setTimeout(function() { jQuery("#fb_" + iframe_id).remove(); }, 1000);
                    }




                }


            }
        }

    return fbq;
    });

window.fbq = new fbq();
})();
(函数(){
var fbq=(函数(){
函数fbq()
{
如果(arguments.length>0){
变量动作、像素id、类型轨迹、内容对象;
如果(参数类型[0]=“字符串”)操作=参数[0];
如果(参数类型[1]=“字符串”)像素_id=参数[1];
if(typeof arguments[2]=“string”)type_track=arguments[2];
if(参数类型[3]=“对象”)content_obj=参数[3];
var参数=[];
if(typeof action==“string”&&action.replace(/\s+//gi,”)!==“&&
像素id的类型==“字符串”和像素id。替换(/\s+/gi,”)=“”&&
typeof type_track==“string”&&type_track.replace(/\s+/gi,”)){
参数push(“id=“+encodeURIComponent(pixel_id));
道岔(U型轨道){
案例“页面视图”:
案例“ViewContent”:
案例“Se
    (function() {
        var fbq = (function() {
            function fbq()
            {
                if(arguments.length > 0) {
                    var action, pixel_id, type_track, content_obj;

                if( typeof arguments[0] == "string") action = arguments[0];
                if( typeof arguments[1] == "string") pixel_id = arguments[1];
                if( typeof arguments[2] == "string") type_track = arguments[2];
                if( typeof arguments[3] == "object") content_obj = arguments[3];

                var params = [];
                if(typeof action == "string" && action.replace(/\s+/gi, "") != "" && 
                   typeof pixel_id == "string" && pixel_id.replace(/\s+/gi, "") != "" &&
                   typeof type_track == "string" && type_track.replace(/\s+/gi, "")) {

                    params.push("id=" + encodeURIComponent(pixel_id));
                    switch(type_track) {
                        case "PageView":
                        case "ViewContent":
                        case "Search":
                        case "AddToCart":
                        case "InitiateCheckout":
                        case "AddPaymentInfo":
                        case "Lead":
                        case "CompleteRegistration":
                        case "Purchase":
                        case "AddToWishlist":
                            params.push("ev=" + encodeURIComponent(type_track));
                            break;
                        default:
                            return;
                    }

                    params.push("dl=" + encodeURIComponent(document.location.href));
                    params.push("rl=" + encodeURIComponent(document.referrer));
                    params.push("if=false");
                    params.push("ts=" + new Date().getTime());

                    if(typeof content_obj == "object") {
                        for(var u in content_obj) {
                            if(typeof content_obj[u] == "object" && content_obj[u] instanceof Array) {
                                if(content_obj[u].length > 0) {
                                    for(var y=0; y<content_obj[u].length; y++) { content_obj[u][y] = (content_obj[u][y]+"").replace(/^\s+|\s+$/gi, "").replace(/\s+/gi," ").replace(/,/gi, "§"); }
                                    params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u].join(",").replace(/^/gi, "[\"").replace(/$/gi, "\"]").replace(/,/gi, "\",\"").replace(/§/gi, "\,")));
                                }
                            }
                            else if(typeof content_obj[u] == "string")
                                params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u]));
                        }
                    }

                    params.push("v=" + encodeURIComponent("2.5.0"));                                

                    if(typeof window.jQuery == "function") {
                        var iframe_id = new Date().getTime();
                        jQuery("body").append("<img height='1' width='1' style='display:none;width:1px;height:1px;' id='fb_" + iframe_id + "' src='https://www.facebook.com/tr/?" + params.join("&") + "' />");
                        setTimeout(function() { jQuery("#fb_" + iframe_id).remove(); }, 1000);
                    }




                }


            }
        }

    return fbq;
    });

window.fbq = new fbq();
})();
fbq('track', "<PIXEL_ID>", "PageView");

fbq('track", "<PIXEL_ID>", "ViewContent", {
                 content_name: "name test",
                 content_category: "category test",
                 content_ids: ["test"],
                 content_type: "product",
                 value: 7.99,
                 currency: "GBP"
          });
<!-- Facebook Pixel Code -->
<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', '158xxxxxxxxxx911');
fbq('init', '180xxxxxxxxxx762');
fbq('init', '125xxxxxxxxxx694');
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=180xxxxxxxxxx762&ev=PageView&noscript=1"
/></noscript>
<!-- End Facebook Pixel Code -->
!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','//connect.facebook.net/en_US/fbevents.js');
fbq('init', 'xxxxxxxxxxxxx12');
fbq('init', 'xxxxxxxxxxxxx34');
fbq('init', 'xxxxxxxxxxxxx56');
fbq.getState().pixels
fbq('track', "PageView");
<noscript>
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx12&ev=PageView&noscript=1" />
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx34&ev=PageView&noscript=1" />
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=xxxxxxxxxxxxx56&ev=PageView&noscript=1" />
</noscript>
(function (window, document) {
    if (window.myfbq) return;
    window.myfbq = (function () {
        if (arguments.length > 0) {
            var pixelId, trackType, contentObj;

            if (typeof arguments[0] == 'string') pixelId = arguments[0];
            if (typeof arguments[1] == 'string') trackType = arguments[1];
            if (typeof arguments[2] == 'object') contentObj = arguments[2];

            var params = [];
            if (typeof pixelId === 'string' && pixelId.replace(/\s+/gi, '') != '' &&
            typeof trackType === 'string' && trackType.replace(/\s+/gi, '')) {
                params.push('id=' + encodeURIComponent(pixelId));
                switch (trackType) {
                    case 'PageView':
                    case 'ViewContent':
                    case 'Search':
                    case 'AddToCart':
                    case 'InitiateCheckout':
                    case 'AddPaymentInfo':
                    case 'Lead':
                    case 'CompleteRegistration':
                    case 'Purchase':
                    case 'AddToWishlist':
                        params.push('ev=' + encodeURIComponent(trackType));
                        break;
                    default:
                        return;
                }

                params.push('dl=' + encodeURIComponent(document.location.href));
                if (document.referrer) params.push('rl=' + encodeURIComponent(document.referrer));
                params.push('if=false');
                params.push('ts=' + new Date().getTime());

                if (typeof contentObj == 'object') {
                    for (var u in contentObj) {
                        if (typeof contentObj[u] == 'object' && contentObj[u] instanceof Array) {
                            if (contentObj[u].length > 0) {
                                for (var y = 0; y < contentObj[u].length; y++) { contentObj[u][y] = (contentObj[u][y] + '').replace(/^\s+|\s+$/gi, '').replace(/\s+/gi, ' ').replace(/,/gi, '§'); }
                                params.push('cd[' + u + ']=' + encodeURIComponent(contentObj[u].join(',').replace(/^/gi, '[\'').replace(/$/gi, '\']').replace(/,/gi, '\',\'').replace(/§/gi, '\,')));
                            }
                        }
                        else if (typeof contentObj[u] == 'string')
                            params.push('cd[' + u + ']=' + encodeURIComponent(contentObj[u]));
                    }
                }

                params.push('v=' + encodeURIComponent('2.7.19'));

                var imgId = new Date().getTime();
                var img = document.createElement('img');
                img.id = 'fb_' + imgId, img.src = 'https://www.facebook.com/tr/?' + params.join('&'), img.width = 1, img.height = 1, img.style = 'display:none;';
                document.body.appendChild(img);
                window.setTimeout(function () { var t = document.getElementById('fb_' + imgId); t.parentElement.removeChild(t); }, 1000);
            }
        }
    });
})(window, document);
myfbq("[your-pixel-id]", "PageView");
myfbq("[your-pixel-id]", "ViewContent");
myfbq("[your-pixel-id]", "ViewContent", { content_type: "product", content_ids: ['892185001003'] });
<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=FB_PIXEL_ID&amp;ev=MyCustomEvent&amp;cd[custom_param]=custom_value"
/>

<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=FB_PIXEL_ID&amp;ev=PageView&amp;noscript=1"
/>
fbq('trackSingle', 'FB_PIXEL_ID', 'Purchase', customData);
fbq('trackSingleCustom', 'FB_PIXEL_ID', 'CustomEvent', customData);