Yunfi

Yunfi

tg_channel
github
email

讓統計程式碼只在特定域名下啟用

如果你給博客啟用了統計程式碼,那麼在本地測試的時候,統計程式碼也會運行,帶來大量 localhost 的無效訪問記錄,影響數據準確性。同時,我還有一個測試用的域名,我在訪問這個域名的時候,也不想觸發統計程式碼。

那麼,如何讓統計程式碼只在我的生產域名 blog.yfi.moe 上運行呢?

前置知識#

使用 Hexo 注入器添加統計程式碼

本文的方法只對使用這類方法添加的追蹤程式碼有效。如果使用的是主題提供的方法,可能需要自行修改主題文件,不在本文討論範圍之內。

修改#

先貼成品吧:

這樣的 js 程式碼被注入之後,只會在目前域名為 `blog.yfi.moe

<script>
  var host = window.location.host;
  if (host == "blog.yfi.mo") {
    // google analytics 1
    (function () {
      var ggtag = document.createElement('script');
      ggtag.async = true;
      ggtag.src = 'https://www.googletagmanager.com/gtag/js?id=G-*******'; // 修改這裡的 G- 代碼
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(ggtag, s);
    })();

    //google analytics 2
    window.dataLayer = window.dataLayer || [];
    function gtag() { dataLayer.push(arguments); }
    gtag('js', new Date());

    gtag('config', 'G-********'); // 修改這裡的 G- 代碼
    
    // umami
    (function() {
      var analytics = document.createElement('script');
      analytics.async = true;
      analytics.src = 'https://change-to-your.domain/script.js'; // 修改為自己的域名
      analytics.setAttribute('data-website-id', 'e0****a7-****-****-****-88e5****5132'); // 改為你的追蹤 id
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(analytics, s);
    })();
  }
</script>

簡單的說,就是要在執行程式碼之前做一個判斷,如果當前網頁的域名是 blog.yfi.moe 則運行統計程式碼的 script,否則不運行。

問了下 ChatGPT,如何獲取當前的域名,答曰使用 window.location.host 方法,再問,如何將 <script async src="https://www.googletagmanager.com/gtag/js?id=G-*******"></script> 這類 script 轉為純 js 的樣式,答曰:

(function () {
      var ggtag = document.createElement('script');
      ggtag.async = true;
      ggtag.src = 'https://www.googletagmanager.com/gtag/js?id=G-*******';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(ggtag, s);
    })();

有點怪,應該不是最優方案,但是試下來可以用,雖然不知道 async 到底有沒有起到作用,就這樣吧。

Google 給的程式碼有兩段,第二段本身就是 js,直接用就行

umami 的程式碼也是同理。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。