【问题标题】:Facebook Pixel with single page app (angularjs)带有单页应用程序的 Facebook Pixel (angularjs)
【发布时间】:2015-12-01 12:32:03
【问题描述】:

我用 AngularJS 构建了单页应用程序。我想用 Facebook Pixel 跟踪 pageView 这个网络应用程序。但在分析板上,Facebook Pixel 忽略了 '#' 之后的 url 部分。 在此图像中,每个 URL 都显示在 http://localhost/ 中。

image

我可以推送自定义 pageView(删除 #)来解决这个问题吗?

【问题讨论】:

标签: javascript angularjs facebook single-page-application


【解决方案1】:

就我而言,它适用于以下配置:

  1. 在 index.html 中添加带有跟踪 ID 的 fb 像素代码

<!-- 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', '<<PIXEL ID>>'); // Insert your pixel ID here.
		</script>
		<noscript><img height="1" width="1" style="display:none"
		src="https://www.facebook.com/tr?id=133095247279894&ev=PageView&noscript=1"
		/></noscript>
		<!-- DO NOT MODIFY -->
		<!-- End Facebook Pixel Code -->
  1. 在状态控制器上注入 $window

    // Registration
    angular.module('app.module')
        .controller('LeadsController', ['$scope', '$state', '$window']);
    
    $window.fbq('track', 'InitiateCheckout');   //or Purchase/Leads/CompleteRegistration event
    

之所以这样工作,是因为基本上 fbq 已经绑定在窗口对象上。 希望这会有所帮助!

【讨论】:

  • 如果我需要动态绑定这个像素ID怎么办?因为您不能在 index.html 中动态绑定值。还有其他替代品吗?
  • 有人知道如何在 Angular 4 中做到这一点吗?
  • 我认为这并不能真正回答问题。您正在触发“InitiateCheckout”事件,而不是“PageView”事件。我一直在尝试做与原始海报基本相同的事情;也就是说,在路由更改(哈希更改)时从 React 应用程序中触发 fbq('track', 'PageView') 事件。我看到实际上只有第一个“PageView”被跟踪。
猜你喜欢
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多