Nhiệm vụ

Hướng dẫn này mô tả tác vụ, một tính năng nâng cao dùng để tùy chỉnh cách analytics.js xác thực, xây dựng và gửi yêu cầu Measurement Protocol.

Tổng quan

Mỗi khi lệnh send được gọi, analytics.js sẽ thực thi một chuỗi tác vụ để xác thực, tạo và gửi yêu cầu Measurement Protocol từ trình duyệt của người dùng đến Google Analytics. Bảng sau đây mô tả từng tác vụ trong số các tác vụ này theo thứ tự thực hiện chúng:

Tên việc cần làm Nội dung mô tả
customTask Theo mặc định, tác vụ này không có tác dụng gì. Ghi đè giá trị đó để cung cấp hành vi tuỳ chỉnh.
previewTask Huỷ yêu cầu nếu trang chỉ được kết xuất để tạo hình thu nhỏ "Trang web hàng đầu" cho Safari.
checkProtocolTask Huỷ yêu cầu nếu giao thức trang không phải là http hoặc https.
validationTask Huỷ yêu cầu nếu các trường bắt buộc bị thiếu hoặc không hợp lệ.
checkStorageTask Huỷ yêu cầu nếu trình theo dõi được định cấu hình để sử dụng cookie nhưng trình duyệt của người dùng đã tắt cookie.
historyImportTask Nhập thông tin từ các cookie ga.js và urchin.js để giữ lại nhật ký của khách truy cập khi một trang web di chuyển sang Universal Analytics.
samplerTask Lấy mẫu khách truy cập dựa trên chế độ cài đặt sampleRate của trình theo dõi này.
buildHitTask Tạo một chuỗi yêu cầu của Measurement Protocol và lưu trữ chuỗi đó trong trường hitPayload.
sendHitTask Truyền yêu cầu Measurement Protocol được lưu trữ trong trường hitPayload đến các máy chủ của Google Analytics.
timingTask Tự động tạo lượt truy cập thời gian ở tốc độ trang web dựa trên chế độ cài đặt siteSpeedSampleRate cho trình theo dõi này.
displayFeaturesTask Gửi thêm lượt truy cập nếu tính năng hiển thị được bật và lượt truy cập trước đó chưa được gửi trong khoảng thời gian chờ do cookie tính năng quảng cáo (_gat) đặt.

Mỗi tác vụ trong số này được triển khai dưới dạng một hàm JavaScript. Hàm này sẽ lấy một thông số mô hình làm dữ liệu đầu vào. Mô hình này là một đối tượng đơn giản cung cấp quyền truy cập vào bất kỳ trường nào được xác định trong Tài liệu tham khảo về trường Analytics.js.

Bạn có thể truy cập hoặc thay thế Tasks bằng các phương thức getset theo dõi tiêu chuẩn. Khi sử dụng các phương thức này, bạn có thể thay thế công việc bằng hàm tuỳ chỉnh của riêng mình hoặc bổ sung chức năng hiện có bằng cách xâu chuỗi các hàm tuỳ chỉnh để thực thi trước hoặc sau một công việc hiện có.

Triển khai

Phần này mô tả cách thêm chức năng mới vào công việc hiện có, thay thế hàm công việc tích hợp sẵn bằng mã tùy chỉnh của riêng bạn hoặc tắt hoàn toàn chức năng công việc.

Ghi đè một việc cần làm

Để ghi đè một tác vụ, bạn có thể set giá trị của tác vụ đó thành một hàm thực hiện việc khác. Một lý do phổ biến để ghi đè tác vụ là để giả lập chức năng khi thử nghiệm việc triển khai analytics.js của bạn.

Mã sau đây thay thế sendHitTask bằng một hàm ghi lại tải trọng lượt truy cập vào bảng điều khiển:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
  console.log(model.get('hitPayload'));
});

Đang thêm vào một việc cần làm

Để chèn chức năng mới, bạn có thể liên kết hàm tác vụ tuỳ chỉnh để thực thi trước hoặc sau một tác vụ hiện có. Trong ví dụ bên dưới, sendHitTask được thay thế bằng một hàm tác vụ tuỳ chỉnh. Hàm này sẽ gọi hàm sendHitTask ban đầu trước để gửi beacon yêu cầu thông thường đến google-analytics.com/collection, sau đó thực thi mã tuỳ chỉnh để gửi bản sao yêu cầu của Measurement Protocol đến máy chủ cục bộ.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  // Modifies sendHitTask to send a copy of the request to a local server after
  // sending the normal request to www.google-analytics.com/collect.
  tracker.set('sendHitTask', function(model) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

Đang huỷ xử lý tác vụ

Một tác vụ có thể huỷ xử lý các tác vụ tiếp theo bằng cách gửi một ngoại lệ. Nếu tác vụ gửi trường hợp ngoại lệ thực thi trước sendHitTask, thì thao tác này sẽ ngăn không cho gửi yêu cầu Measurement Protocol đến máy chủ của Google Analytics. Trong ví dụ dưới đây, chúng tôi huỷ yêu cầu bất cứ khi nào trình duyệt của người dùng chứa cookie có tên "testing" với giá trị "true".

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {
  var originalBuildHitTask = tracker.get('buildHitTask');
  tracker.set('buildHitTask', function(model) {
    if (document.cookie.match(/testing=true/)) {
      throw 'Aborted tracking for test user.';
    }
    originalBuildHitTask(model);
  });
});

ga('send', 'pageview');

Tắt một tác vụ

Để tắt bất kỳ hàm tác vụ tích hợp nào, hãy thay thế hàm đó bằng giá trị rỗng.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');