如何在 nuxtjs 中调用函数 onload

How to call function onload in nuxtjs

提问人:Notik 提问时间:11/12/2023 最后编辑:Notik 更新时间:11/12/2023 访问量:51

问:

我在 Nuxtjs 2 中有一个应用程序。我正在使用 nuxt-facebook-pixel-module 来跟踪我网站上的用户活动。我向其添加了 Facebook 转换 API。我创建了一个调用 Facebook 转换 API 的 API 端点,现在我想在每次更改路由并调用客户端函数 this.$fb.track() 时调用此端点。这也必须是您第一次启动网站,并且每次路线更改时也必须如此。我不想将相同的代码添加到我的所有子页面中,因为这将是很多冗余代码。是否有可能通过插件文件夹或中间件以某种方式做到这一点?

我试图通过plugins目录进行此操作,但它仅适用于第一次路由更改。当我打开网站时,它不起作用。仅当我刷新页面或转到其他子页面时。

这就是我的插件代码的样子:

export default async ({ app }) => {
  app.router.afterEach(async (to, from) => {
    const eventId = Math.floor(Math.random() * 100000).toString()

    await fetch('/api/event-handle', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        data: [{some data}],
      }),
    })
    app.$fb.track('ViewContent', {}, eventId)
  })
}

在我的 nuxt.config.js 中,我这样添加它:

 plugins: [
    { src: '@/plugins/facebook-client.js', mode: 'client' },
  ],

但是当我运行此代码时,我看到在控制台中调用了$fb函数,如屏幕截图所示:console

但是在网络选项卡中,我没有看到任何获取请求,只有当我刷新页面或转到其他路由时。

network tab

如果有人能帮助我,我将不胜感激。

vue.js vuejs2 nuxt.js facebook-pixel nuxtjs2

评论

0赞 Estus Flask 11/12/2023
“subpage” - 它是嵌套路由吗?您能澄清一下您导航的路线吗?
0赞 Notik 11/12/2023
我有包含我所有路线的页面文件夹。例如,我有一个博客目录,里面有 index.vue 和 _slug.vue 等文件,用于我所有的博客文章。当然,我网站上的每个子页面都有更多的文件夹。主页,在主页目录中作为 index.vue 文件。我想输入调用 API 并在访问这些页面时触发 $fb 事件的代码。
0赞 Estus Flask 11/12/2023
请解释一下目前的行为。afterEach 在哪种情况下有效,在哪种情况下无效?“但它只在第一次路线变更时才有效。当我打开网站时,它不起作用。只有当我刷新我的页面或转到其他子页面时“——这听起来很矛盾。我希望它能像你一般那样完成
0赞 Notik 11/12/2023
这对我来说也很奇怪。我已经编辑了这篇文章,我希望它能更清楚地表达我的意思。当用户进入我的网站时,没有 API 查询,只有 $fb 函数,如截图所示。然后,当我重新加载页面时,查询被发送并且一切正常,但我希望它在用户进入页面时立即注册,而不是在重新加载后注册。
0赞 Estus Flask 11/12/2023
所以 $fb.track 被调用而 fetch 不是吗?这是否意味着问题出在获取上?这个问题不是很清楚。关于获取,是Nuxt的吗?在这种情况下,它的行为应有所不同 v2.nuxt.com/docs/components-glossary/fetch#the-fetch-hook

答: 暂无答案