0

我现在已经花了几天时间研究和尝试不同的事情来让它运行起来。但是到目前为止,对我来说没有任何方法可以解决。

我目前的设置是:

gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: `gatsby-plugin-gtag`,
      options: {
        trackingId: "G-TRACKING ID",
        head: true,
        anonymize: true
      },
    },
    {
      resolve: `gatsby-plugin-gdpr-cookies`,
      options: {
        googleAnalytics: {
          trackingId: "G-TRACKING ID",
          cookieName: "gatsby-gdpr-google-analytics",
          anonymize: true,
        },
      },
      environments: ["development", "production"],
    },
    ...
  ]
}

src/pages/index.js

import React from "react"
import CookieConsent from "react-cookie-consent"

export default function Home() {

  return (
    <div>
      <CookieConsent
        overlay
        location="bottom"
        buttonText="Accept"
        enableDeclineButton
        declineButtonText="Decline"
        cookieName="gatsby-gdpr-google-analytics"
      >
        We are using cookies to enhance this site ...
      </CookieConsent>
      ...
    </div>
  )
}

结果是跟踪工作,但当用户点击拒绝时,跟踪继续。

当前是否有设置 google-analytics 和 cookie 同意的方法来在用户拒绝跟踪时停止跟踪?

非常感谢您!

4

1 回答 1

1

假设访问者选择退出 Google Analytics 跟踪(这适用于 analytics.js 和 gtag.js)。然后,您需要激活浏览器窗口属性以禁用跟踪。在 gtag() 开始跟踪您网站上的行为之前,它始终检查是否设置了以下内容。

window['ga-disable-<GA_TRACKING_ID>'] = true;

最大的优点是您不必从网页中删除跟踪代码。但是必须在跟踪代码进行任何调用之前设置 window 属性。

<!-- Google Analytics -->
<script>
window['ga-disable-<GA_TRACKING_ID>'] = true;
    
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', '<GA_TRACKING_ID>');
</script>

在上面的示例中,不会向 GA 发送任何信息,因为window['ga-disable-<GA_TRACKING_ID>']在 GA 代码段之前设置为 true。您只需要考虑一个逻辑,当有人单击拒绝时将其设置为真。

注意:必须在调用 gtag() 之前设置此窗口属性,并且必须在您要禁用分析的每个页面上设置它。如果该属性未设置或设置为 false,则 Analytics 将照常工作。

于 2021-01-09T13:39:26.527 回答