13

Nếu không có sử dụng bất kỳ khung công tác JS nào khác (dojo, jquery, v.v.), làm cách nào tôi tải động JavaScript của Google Analytic để sử dụng trên trang web để theo dõi web?Làm cách nào để tự động tải JavaScript Google Analytics?

Các điển hình thích hợp để tự động tải JS là phải làm như sau:

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(); 

Nhưng điều đó không làm việc.

Các tệp tin ga.js không được nạp trong thời gian cho _gat._getTracker & _initData/trackPageview hoạt động.

Bất kỳ ý tưởng nào về cách tải động ga.js.

CẬP NHẬT: Có vẻ như ai đó đã cố giải quyết vấn đề này tại liên kết sau. Tuy nhiên, nó được sử dụng với mã Urchin cũ chứ không phải mã Google Analytics.

Bất kỳ ý tưởng nào về cách làm cách này để làm việc với ga.js thay vì urchin.js?

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

+0

@Danny - bạn sẽ đề xuất tiêu đề nào thay đổi? –

Trả lời

0

Server side lập trình sẽ được dễ dàng hơn tôi đoán, nhưng tôi thấy thissome thời gian trước đây. Lưu ý rằng nó đặc biệt đặt nó vào html head.

Đồng thời kiểm tra liên kết đầu tiên xuống 'Thêm Javascript qua Ajax'.

+0

@voyager - liên kết đầu tiên hiển thị cách thực hiện bằng cách sử dụng phương pháp tôi hiển thị trong bài đăng của tôi, cách này không hoạt động. Liên kết thứ hai mô tả việc thêm JS vào thuộc tính HEAD của html, đó là UNdesirable vì nó sẽ * block * html rendering. –

+0

@voyager - cảm ơn mặc dù đã cố gắng trả lời :) –

0

Tôi đã đặt một thứ gì đó lại với nhau mà thực hiện điều này ... bằng cách sử dụng jquery. Bí quyết là thêm sự kiện tải vào thẻ tập lệnh với mã theo dõi trong đó.

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); 

Điều tôi đang cố gắng giải quyết là ... điều này cho phép bởi google.

+0

câu hỏi cho biết * mà không cần * jquery – GarethD

1

Hãy thử sử dụng mã JavaScript chính xác do Google cung cấp và sau đó điều kiện hiển thị phần mã đó dựa trên cấu trúc trong khung giao diện người dùng của bạn. Bạn không nói nền tảng này đang chạy, nếu là ASP.NET bạn có thể đặt mã trong một PlaceHolder hoặc UserControl và sau đó thiết lập Visible thành true hoặc false dựa trên một thiết lập tập tin cấu hình nếu kịch bản cần được bao gồm. Tôi đã sử dụng phương pháp này trên nhiều trang web để ngăn không cho tập lệnh Analytics được đưa vào trong môi trường tiền sản xuất.

0
 
function loadGA() 
{ 
    if(typeof _gat == 'function') //already loaded 
    { 
     //innitGA(); 
     // you may want the above line uncommented.. 
     // I'm presuming that if the _gat object is there 
     // you wouldn't want to. 
     return; 
    } 
    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 methods to detect the load of ga.js 
    //some browsers use both, however 
    loaded = false; // so use a boolean 
    js.onreadystatechange = function() { 
     if (js.readyState == 'loaded') 
     { 
      if(!loaded) 
      { 
       innitGA(); 
      } 
      loaded = true; 
     } 
    }; 
    js.onload = function() 
    { 
     if(!loaded) 
     {   
      innitGA(); 
     } 
     loaded = true; 
    }; 
} 

function innitGA() 
{ 
    //var pageTracker = _gat._getTracker('GA_ACCOUNT/PROFILE_ID'); 
    //pageTracker._initData(); 
    //pageTracker._trackPageview(); 
    alert('oh hai I can watch plz?'); 
} 

chỉ cần gọi loadGA() ... thử nghiệm trên IE6/7/8, FF3, Chrome và Opera

xin lỗi nếu tôi hơi muộn để đảng này.

5

Bạn có thể sử dụng đoạn mã này từ 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> 
+1

bạn có thể gắn điều này vào một hàm nhưng hãy nhớ rằng _gaq phải là toàn cầu (trên đối tượng cửa sổ) – reconbot

Các vấn đề liên quan