在 VUE SPA 中添加 Facebook Pixel 特定页面

Posted

技术标签:

【中文标题】在 VUE SPA 中添加 Facebook Pixel 特定页面【英文标题】:Add Facebook Pixel specific page in VUE SPA 【发布时间】:2021-12-19 05:44:36 【问题描述】:

我在 vue 中为 SPA 应用程序添加特定 facebook 像素时遇到问题

<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', 'test');
  fbq('track', 'PageView');
  fbq('track', 'CompleteRegistration');
</script>
<noscript>
  <img
    
    
    src="https://www.facebook.com/tr?id=1234456789&ev=PageView
  &noscript=1"
  />
</noscript>
<!-- End Facebook Pixel Code -->

我想将此添加到我的页面域名/注册中

如何在单页应用程序VUE中为特定页面添加脚本头和无脚本头

【问题讨论】:

你试过我的解决方案了吗?它对你有用吗? 感谢它的工作,但是当我使用扩展程序检查时,网页浏览量会变多吗? 每当您刷新应用程序或调用您的网站加载时的页面视图。这不是问题。如果我的回答能帮助你接受答案,请点个赞。 【参考方案1】:

第 1 步:public/index.html 内的 &lt;head&gt; 标记中添加 facebook pixel code

<!-- 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', '266xxxxxxxx1');
  fbq('track', 'PageView');
</script>
<noscript><img   style="display:none"
src="https://www.facebook.com/tr?id=266xxxxxxxx1&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

第 2 步: 在您的组件 computed, methods, created 中,您可以这样做,

methods里面你可以做,

methods: 
  addtoCart() 
    window.fbq('track', 'Add to your shopping cart')
  

computed 里面你可以做类似的事情

computed: 
  formattedRating () 
    window.fbq('track', 'Format your rating')
    return this.fixedPoints === null
      ? this.currentRating
      : this.currentRating.toFixed(this.fixedPoints)
  ,

created 里面你可以做喜欢,

created() 
  this.loadPressRelease()
  window.fbq('track', 'Load press release')
,

您可以在任何组件中使用window.faq 调用facebook pixel 事件faq 函数

【讨论】:

【参考方案2】:

您可以根据当前路由名称渲染此脚本。

首先,它必须在已安装的 Vue 应用程序内(在 &lt;router-view/&gt; 内),例如:如果你有它,则在布局组件内。

重要的是,直接在 Vue 应用程序中添加脚本可能会导致问题。 因此,最好将脚本移动到资产文件夹中的 js 文件中,例如: /js/fbq.js.

然后检查当前路由以将其呈现如下:

<!-- Render based on route -->
<component v-if="$route.name == 'register'" :is="`script`" src="/js/fbq.js" async></component>

【讨论】:

在 fbs.js 中是否包含脚本代码?

以上是关于在 VUE SPA 中添加 Facebook Pixel 特定页面的主要内容,如果未能解决你的问题,请参考以下文章

vue预渲染插件 prerender-spa-plugin(seo优化,生成多页面)

ID4 ADFS 3.0 和 oidc-client (vue spa) - 回调实现

SPA项目开发登录

如何在我的 SPA 的特定页面上隐藏 Facebook 客户聊天插件?

将 _redirects 文件添加到 Netlify 上托管的 Vue SPA 的根路径

SPA项目开发之登录注册