谷歌意见征求模式-独立站完整代码

Google Analytics 设置


<!-- Google Analytics (gtag.js) with Consent Mode -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Initialize Google Consent Mode with default 'deny' tracking
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'personalization_storage': 'denied'
});
// Initialize Google Analytics configuration
gtag('js', new Date());
gtag('config', 'G-XXXXXX', { anonymize_ip: true });
</script>
&lt;/pre&gt;


css设置

</xmp>

意见征求内容


<!-- Cookie Consent Banner -->
<div id="cookie-banner" style="display:none">
  <p style="margin: 0; color: #333;">We use cookies to enhance your experience. Do you consent?</p>
  <button class="btn-yes" onclick="acceptCookies()">Accept</button>
  <button class="btn-no" onclick="rejectCookies()">Deny</button>
</div>
&lt;/pre&gt;


获取用户授权


<script>
function setCookie(name, value, days) {
  let expires = "";
  if (days) {
    let date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toUTCString();
  }
  document.cookie = name + "=" + value + "; path=/; SameSite=Lax; Secure" + expires;
}

function getCookie(name) {
  let match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  return match ? match[2] : null;
}

function showCookieBanner() {
  let userLang = navigator.language || navigator.userLanguage;
  let userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; // Get the time zone
  let euLanguages = ["de", "fr", "es", "it", "nl", "pl", "sv", "da", "fi", "cs", "hu", "pt", "el", "sk", "lt", "lv", "et", "bg", "ro", "sl", "hr", "mt"];
  let euTimeZones = [
    "Europe/Amsterdam", "Europe/Andorra", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava",
    "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Chisinau", "Europe/Copenhagen",
    "Europe/Dublin", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Lisbon", "Europe/Ljubljana", "Europe/London",
    "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Oslo", "Europe/Paris", "Europe/Prague",
    "Europe/Riga", "Europe/Rome", "Europe/Stockholm", "Europe/Tallinn", "Europe/Vienna", "Europe/Vilnius", "Europe/Warsaw"
  ]; // EU and major European time zones

  if (euLanguages.some(lang => userLang.startsWith(lang)) || euTimeZones.includes(userTimeZone)) {
    let consent = getCookie('user_consent');
    if (!consent) {
      document.getElementById('cookie-banner').style.display = 'block';
    }
  }
}

function acceptCookies() {
  setCookie('user_consent', 'granted', 365);
  gtag('consent', 'update', {
    'ad_storage': 'granted',
    'analytics_storage': 'granted',
    'personalization_storage': 'granted'
  });
  document.getElementById('cookie-banner').style.display = 'none';
}

function rejectCookies() {
  setCookie('user_consent', 'denied', 365);
  document.getElementById('cookie-banner').style.display = 'none';
}

window.onload = showCookieBanner; // Check location on page load
</script>
&lt;/pre&gt;