我正在尝试将Facebook像素追踪添加到我的Angular应用中。
首先,我只是将基本的Facebook像素代码添加到我的一个基本HTML文件中,如下所示:
!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', '1234567890');
时,一个PageView事件会被隐式地发送。
虽然我可以看到这在普通标准应用程序中有些有用,但当处理像Angular这样的框架时,它是一种不需要的行为,因为fbq不能很好地处理URL结构。例如:www.hi.com/#/hello
被注册为www.hi.com
。
是否有人遇到过这个问题,或者找到了更好的方法来将Facebook像素与Angular集成?我看到了一些提到Angular和FBQ的示例,以及一个有点过时的Angular插件。但是它们似乎都没有提到这一点。
fbq.disablePushState = true;
在这里的开发者文档中也有提到:https://developers.facebook.com/docs/marketing-api/audiences-api/pixel/。对于我的 Rails/Turbolinks webapp,它也是解决方案,因为它的行为类似于 SPA。否则,在单击后会隐式跟踪 PageView 事件,并在 Turbolinks 最终加载页面后再跟踪另一个事件。 - Mike Lieser