2013-04-02 34 views
10

Tôi có thể gửi sự kiện Google Analytics và ngay lập tức điều hướng đi, như vậy không?Gửi sự kiện Google Analytics, sau đó điều hướng ngay lập tức

_gaq.push(['_trackEvent', 'foobar']); 
window.location = "/"; 

Nếu Google Analytics thực hiện một số yêu cầu AJAX khi được gọi thì nó sẽ hoạt động cho dù chúng tôi có ở trên trang hay không. Mối quan tâm của tôi là có vẻ như đôi khi nó chỉ được đưa công cụ vào một mảng để xử lý sau này. Tôi nghĩ điều này chỉ xảy ra lúc đầu, khi Google Analytics chưa có thời gian để khởi tạo, nhưng tôi muốn chắc chắn điều này.

Tôi đã làm một thử nghiệm với gỡ lỗi GA, và nó dường như đã làm việc, nhưng tôi không chắc chắn nếu điều đó có nghĩa là nó sẽ luôn tùy thuộc vào tốc độ tải và những gì không.

Tôi có thể thực hiện việc này và không bao giờ mất bất kỳ sự kiện nào không?

Trả lời

7

Con đường tôi đã thực hiện nó là như vậy:

_gaq.push(['_trackEvent', '...', '...', '...']); 
_gaq.push(function(){ 
    // do stuff here 
}); 

$('#logo').on('click', function(){ 
    var curPage = window.location.href; 
    _gaq.push(['_trackEvent', curPage, '#logo']); 
    _gaq.push(function(){ 
     window.location.href = '/'; 
    }); 
}); 

Cuộc gọi đẩy thứ hai sẽ luôn luôn chạy sau khi người đầu tiên, bởi vì Google hàng đợi tất cả đẩy cuộc gọi, do đó người đầu tiên sẽ chạy và hoàn chỉnh , rồi tùy chọn thứ hai sẽ chạy và hoàn tất. Google cho phép bạn đặt các hàm trong phương thức đẩy để bạn có thể xếp hàng chúng.

Nguồn: https://developers.google.com/analytics/devguides/collection/gajs/#PushingFunctions

+0

Chính xác những gì tôi đang tìm kiếm. Cảm ơn! –

+0

Hãy đảm bảo thực hiện nhiều thử nghiệm khi thử.Chỉ vì cuộc gọi _trackqvent _gaq.push đã trở lại không có nghĩa là dữ liệu đã được ghi lại. Bên trong, có một yêu cầu hình ảnh không đồng bộ được sử dụng để gửi dữ liệu và bạn phụ thuộc vào yêu cầu của giai đoạn nào khi trang bị rách cho trang mới. – mike

+0

Tôi nghĩ rằng nếu _gaq.push() thực sự đã gửi yêu cầu, thì sẽ không thành vấn đề nếu tôi tiếp tục ngay sau đó - bởi vì khi yêu cầu được gửi, trình duyệt không cần phải làm gì khác, phải không? Trừ khi có lỗi với việc gửi theo dõi, nhưng điều đó có thể sẽ bị hỏng, dù tôi có chuyển hướng hay không. –

0

Dường như lo ngại của bạn về việc mất sự kiện là hợp pháp, hãy xem this question. One answer có vẻ hơi mong manh liên quan đến việc Google thay đổi mã của họ, nhưng sẽ cho phép bạn xác nhận theo dõi sự kiện trước khi điều hướng đến liên kết. Điều đó có lẽ sẽ là "gần ngay lập tức".

5

tôi thêm một chút chậm trễ (qua setTimeout) nếu trang mới không được mở ra ở cửa sổ mới.

Tôi chưa có cơ hội thử tính năng này, nhưng Universal Analytics mới của Google có chức năng hitCallback được thực hiện sau khi dữ liệu đã được gửi.

+0

Ồ, điều này thật tuyệt vời và được thực hiện chính xác cho mục đích đó. Cám ơn rất nhiều về đường link! –

1

@mike đề cập hitCallback phương pháp được mô tả trong tài liệu hướng dẫn analytics.js:

Trong một số trường hợp, như khi bạn theo dõi các liên kết đi, bạn có thể muốn biết khi theo dõi được thực hiện gửi dữ liệu. Bằng cách đó, bạn chỉ có thể gửi người dùng đến đích của họ sau khi nhấp chuột của họ đã được báo cáo cho Google Analytics. Để giải quyết điều này, lệnh gửi cho phép bạn chỉ định một hàm hitCallback trong đối tượng tên trường sẽ thực thi ngay sau khi analytics.js hoàn thành việc gửi dữ liệu.

Điều này thật tuyệt vời, ngoại trừ đoạn mã là vẫn là trong phiên bản beta công khai. Nếu vì một lý do nào (ahem chính sách technophobic ahem) bạn bị giới hạn chức năng ga.js, bạn có thể sử dụng this workaround:

_gaq.push(['_set', 'hitCallback', function(){ 
    document.location='someOtherPage.html'; 
}]); 
_gaq.push(['_trackEvent', 'category', 'event', 'value']); 

Một gợi ý hợp lý là phải có một dự phòng để có callback thi hành ngay nếu _gaq không được xác định.

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