使用Rails和Turbolinks运行Facebook像素

4
Facebook像素的初始化代码和PageView代码建议放置在页面的头部: https://developers.facebook.com/docs/facebook-pixel/using-the-pixel#get 问题是,使用Rails turbolinks时,网页的头部永远不会重新加载。Pixel确实会在pushState/popState上向Facebook发送pageView事件,但URL是错误的-来自页面初始加载的URL。我假设像素保存了最初的位置(当调用fbq('init')时),然后重用它进行PageView事件。
我尝试将整个代码段放在body中,但结果是"Facebook Pixel Error:Duplicate Pixel ID:XXXXXXXXX" JavaScript错误。
我尝试将代码分割并将fbq('init',XXXXX)事件放在头部,然后在page:change事件上调用fbq('track','PageView');但问题又出现了,这再次使用了初始URL。
我也尝试将window.fbq变量设置为undefined,并在PageView之前再次调用init - 这一切都在page:change回调中进行。 但是,然后我收到了“Facebook像素警告:在此页面上检测到具有冲突版本的多个像素”,并且PageView再次使用错误的URL被调用。
有人曾经让Facebook像素与turbolinks一起工作吗?
1个回答

7

我正在使用以下JS代码,该代码将在头部加载:

/* insert pixel load function here */

function trackPageView() {
  fbq('init', 'PIXEL_ID')
  fbq('track', 'PageView')
}

document.addEventListener('turbolinks:load', trackPageView, true)

当我在本地使用Facebook像素助手进行测试时,它显示每个我使用Turbolinks导航到的页面上都有一个PageView事件,并且没有警告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接