首頁>Program>source

Without 使用任何其他JS框架(dojo,jquery等), how would I dynamically load Google Analytic's javascript to be used on a web page for web-tracking?

動態載入JS的典型做法是執行以下操作:

var gaJs = document.createElement("script");
gaJs.type = "text/javascript";
gaJs.src = "http://www.google-analytics.com/ga.js";
document.body.appendChild(gaJs);
var pageTracker = _gat._getTracker("UA-XXXXXXXXX");
pageTracker._initData();
pageTracker._trackPageview();

But that doesn't work.

未及時為 _gat._getTracker載入ga.js檔案 & _initData/TrackPageview 起作用。

關於如何正確動態載入ga.js的任何想法。

UPDATE :似乎有人尝試通過以下鏈接解決此問题.但是,它只能与旧的Urchin代碼一起使用,而不能与Google Analytics(分析)一起使用.

關於如何使其与ga.js(而不是urchin.js)一起使用的任何想法?

http://20y.hu/20070805/ loading-google-analytics-dynamically-on-document-load.html

最新回復
  • 8月前
    1 #

    您可以使用HTML5 Boilerplate中的此代碼段。

    <!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
    <script>
      var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
      (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
      g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
      s.parentNode.insertBefore(g,s)}(document,'script'));
    </script>
    

  • 8月前
    2 #

    尝試使用Google提供的確切JavaScript代碼,然後根据您的UI框架中的結構有條件地顯示该部分代碼.您没有說這是在什麼平臺上執行,如果是ASP.NET,則可以將代碼放入PlaceHolder或UserControl中,然後根据配置檔案設置(如果應包含指令碼)將Visible設置為true或false.我已经在多个站點上使用了這種方法,以防止將Analytics指令碼包含在預生产環境中。

  • 8月前
    3 #

    服務器端程式設計可能会更容易,但是我是在一段時間之前發現的.請註意,它专門將其設置為 html head .

    還請檢查"通過Ajax添加Javascript"的第一个鏈接。

  • 8月前
    4 #

    我實際上只是將一些东西組合在一起,使用jquery.诀窍是在指令碼代碼中添加一个包含跟蹤代碼的載入事件。

    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    var gaScript = document.createElement('script');
    var loaded = false;
    gaScript.src = gaJsHost + "google-analytics.com/ga.js";
    $(gaScript).load(function(){
      loaded = true;
      var pageTracker = _gat._getTracker(Consts.google_analytics_uacct);
      pageTracker._initData();
      pageTracker._trackPageview();
    });
    document.body.appendChild(gaScript);
    // And to make it work in ie7 & 8
    gaInterval = setInterval(function() {
      if (!loaded && typeof _gat != 'undefined') {
        $(gaScript).load();
        clearInterval(gaInterval);
      }
    },50);
    

    我要解決的問题是...這是Google允许的。

  • 8月前
    5 #

     函式loadGA()
     {
       if(typeof _gat =='function')//已经載入
       {
         // innitGA();
         //您可能不希望上述行註釋。
         //我假設如果_gat物件在那裏
         //您不想。
         返迴;
       }
       var hostname ='google-analytics.com';
       var protocol =(("" https:" == document.location.protocol)?" https:// ssl。":" http:// www。");
       js = document.createElement('script');
       js.setAttribute('type','text / javascript');
       js.setAttribute('src',protocol + hostname +'/ ga.js');
       document.body.appendChild(js);
       // 2種檢測ga.js負載的方法
       //某些瀏覽器同時使用
       載入=假; //因此請使用布林值
       js.onreadystatechange = function(){
         如果(js.readyState =='loaded')
         {
           如果(已載入)
           {
             innitGA();
           }
           載入=真;
         }
       };
       js.onload = function()
       {
         如果(已載入)
         {
           innitGA();
         }
         載入=真;
       };
     }
     函式innitGA()
     {
       // var pageTracker = _gat._getTracker('GA_ACCOUNT / PROFILE_ID');
       //pageTracker._initData();
       //pageTracker._trackPageview();
       警報('哦,我可以看電视吗?');
     }
    

    只需呼叫loadGA()...在IE6 / 7/8,FF3,Chrome和Opera上进行測試

    對不起,如果我晚一點參加這次聚会。

  • r:每次从宽到长的多種測量
  • regex:使用正則表達式自動將註釋添加到PDF檔案