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 事件。

我试图将整个代码段放在正文中,但结果是“Facebook Pixel Error: Duplicate Pixel ID: XXXXXXXXXX” java 脚本错误。

我尝试拆分代码并将 fbq('init', XXXXX) 事件放在头部,然后在 page:change 事件上调用 fbq('track', 'PageView'); 但问题是这再次使用了初始 URL。

我还尝试将 window.fbq 变量设置为 undefined 并在 PageView 之前再次调用 init - 所有这些都在 page:change 回调中。但随后我收到“Facebook 像素警告:在此页面上检测到多个具有冲突版本的像素”,并且再次使用错误的 url 调用了 PageView。

有没有人让 Facebook 像素与 turbolinks 一起工作?

4

1 回答 1

6

我正在使用以下加载到头部的 JS:

/* insert pixel load function here */

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

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

当我使用 Facebook Pixel Helper 在本地对其进行测试时,它会在我使用 turbolinks 导航到的每个页面上显示一个 PageView 事件,并且没有警告。

于 2017-04-28T20:12:52.433 回答