این راهنما وظایف را توصیف می کند، یک ویژگی پیشرفته که برای سفارشی کردن نحوه اعتبارسنجی، ساخت و ارسال درخواست های پروتکل اندازه گیری analytics.js استفاده می شود.
بررسی اجمالی
هر بار که دستور send
فراخوانی میشود، analytics.js دنبالهای از وظایف را برای اعتبارسنجی، ساختن و ارسال درخواست پروتکل اندازهگیری از مرورگر کاربر به Google Analytics اجرا میکند. جدول زیر هر یک از این وظایف را به ترتیب اجرا توضیح می دهد:
نام وظیفه | شرح |
---|---|
customTask | به طور پیش فرض این کار هیچ کاری انجام نمی دهد. برای ارائه رفتار سفارشی، آن را لغو کنید. |
previewTask | در صورتی که صفحه فقط برای ایجاد تصویر کوچک «سایتهای برتر» برای سافاری ارائه شود، درخواست را لغو میکند. |
checkProtocolTask | اگر پروتکل صفحه http یا https نباشد، درخواست را لغو می کند. |
validationTask | در صورتی که فیلدهای لازم وجود نداشته باشد یا نامعتبر باشد، درخواست را لغو می کند. |
checkStorageTask | اگر ردیاب برای استفاده از کوکی ها پیکربندی شده باشد اما مرورگر کاربر کوکی ها را غیرفعال کرده باشد، درخواست را لغو می کند. |
historyImportTask | اطلاعات را از کوکیهای ga.js و urchin.js وارد میکند تا تاریخچه بازدیدکنندگان را هنگام انتقال سایت به Universal Analytics حفظ کند. |
samplerTask | از بازدیدکنندگان بر اساس تنظیمات sampleRate برای این ردیاب نمونه برداری می کند. |
buildHitTask | یک رشته درخواست پروتکل اندازه گیری می سازد و آن را در قسمت hitPayload ذخیره می کند. |
sendHitTask | درخواست پروتکل اندازه گیری ذخیره شده در قسمت hitPayload را به سرورهای Google Analytics منتقل می کند. |
timingTask | بر اساس تنظیم siteSpeedSampleRate برای این ردیاب، به طور خودکار یک ضربه زمان بندی سرعت سایت ایجاد می کند. |
displayFeaturesTask | اگر ویژگیهای نمایش فعال باشد و بازدید قبلی در بازه زمانی تعیینشده توسط کوکی ویژگیهای تبلیغاتی (_gat) ارسال نشده باشد، یک ضربه اضافی ارسال میکند. |
هر یک از این وظایف به عنوان یک تابع جاوا اسکریپت اجرا می شود که یک پارامتر مدل واحد را به عنوان ورودی می گیرد. مدل یک شی ساده است که دسترسی به هر یک از فیلدهای تعریف شده در مرجع فیلد Analytics.js را فراهم می کند.
با استفاده از روشهای get
و set
استاندارد ردیاب میتوان به وظایف دسترسی پیدا کرد یا جایگزین کرد. با استفاده از این روشها، میتوانید وظایف را با توابع سفارشی خود جایگزین کنید، یا عملکرد موجود را با زنجیر کردن توابع سفارشی خود برای اجرای قبل یا بعد از یک کار موجود، تقویت کنید.
پیاده سازی
این بخش نحوه افزودن عملکرد جدید به وظایف موجود، جایگزینی توابع وظیفه داخلی با کد سفارشی خود یا غیرفعال کردن یک تابع وظیفه را به طور کامل شرح می دهد.
نادیده گرفتن یک کار
برای نادیده گرفتن یک کار، می توانید مقدار آن را روی تابعی set
که کار متفاوتی انجام می دهد. یک دلیل متداول برای نادیده گرفتن وظایف، حذف عملکرد هنگام آزمایش پیادهسازی analytics.js است.
کد زیر sendHitTask
با تابعی جایگزین میکند که پیلود ضربه را به کنسول ثبت میکند:
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
console.log(model.get('hitPayload'));
});
اضافه کردن به یک کار
برای درج عملکرد جدید، میتوانید تابع وظیفه سفارشی خود را برای اجرای قبل یا بعد از یک کار موجود زنجیرهای کنید. در مثال زیر، sendHitTask
با یک تابع وظیفه سفارشی جایگزین شده است که ابتدا تابع sendHitTask
اصلی را فراخوانی می کند تا چراغ درخواست عادی را به google-analytics.com/collection ارسال کند، سپس کد سفارشی را اجرا می کند تا یک کپی از درخواست پروتکل اندازه گیری را ارسال کند. یک سرور محلی
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');
لغو پردازش کار
یک کار می تواند پردازش وظایف بعدی را با پرتاب یک استثنا متوقف کند. اگر وظیفه پرتاب کننده استثنا قبل از sendHitTask
اجرا شود، این امر باعث جلوگیری از ارسال درخواست پروتکل اندازه گیری به سرورهای Google Analytics می شود. در مثال زیر، هر زمان که مرورگر کاربر حاوی کوکی به نام «تست» با مقدار «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');
غیرفعال کردن یک کار
برای غیرفعال کردن هر یک از توابع وظیفه داخلی، آن را با null جایگزین کنید.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');