مقدمه ای بر ga.js (Legacy)

ga.js یک کتابخانه جاوا اسکریپت برای سنجش نحوه تعامل کاربران با وب سایت شما است. این یک کتابخانه قدیمی است. اگر با Google Analytics شروع به کار می کنید، باید از آخرین کتابخانه ردیابی، analytics.js استفاده کنید.

کد ردیابی شروع سریع

قطعه Analytics قطعه کوچکی از کد جاوا اسکریپت است که در صفحات خود قرار می دهید. با قرار دادن ga.js در صفحه، ردیابی Google Analytics را فعال می کند. برای استفاده از آن در صفحات خود، قطعه کد زیر را کپی کنید و شناسه دارایی وب خود را جایگزین UA-XXXXX-X کنید. این قطعه را در صفحه قالب وب سایت خود قرار دهید تا قبل از بسته شدن تگ </head> ظاهر شود.

اگر نیاز به انجام بیشتر از ردیابی صفحه اولیه دارید، به مرجع ردیابی برای لیستی از روش های موجود در API مراجعه کنید و برای جزئیات بیشتر در مورد استفاده از نحو ناهمزمان ، راهنمای استفاده را ببینید. برای دستورالعمل های گام به گام در مورد راه اندازی ردیابی، به مقاله مرکز راهنمایی در مورد راه اندازی ردیابی مراجعه کنید.

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

قطعه بالا حداقل پیکربندی مورد نیاز برای ردیابی یک صفحه به صورت ناهمزمان را نشان می دهد. از _setAccount برای تنظیم شناسه دارایی وب صفحه استفاده می‌کند و سپس _trackPageview را فرا می‌خواند تا داده‌های ردیابی را به سرورهای Google Analytics ارسال کند.

مهم: اگر صفحات خود را از قطعه سنتی به آخرین نسخه ناهمزمان به‌روزرسانی می‌کنید، ابتدا باید قطعه ردیابی موجود را حذف کنید. استفاده از هر دو قطعه با هم در یک صفحه را توصیه نمی کنیم. برای دستورالعمل‌های انتقال، به مهاجرت به همگام‌سازی مراجعه کنید.

نحو ناهمزمان چگونه کار می کند

شی _gaq چیزی است که نحو ناهمزمان را ممکن می کند. این به عنوان یک صف عمل می کند، که یک ساختار داده اولی است که تماس های API را جمع آوری می کند تا زمانی که ga.js برای اجرای آنها آماده شود. برای اضافه کردن چیزی به صف، از روش _gaq.push استفاده کنید.

برای فشار دادن یک فراخوانی API در صف، باید آن را از نحو سنتی جاوا اسکریپت به یک آرایه دستوری تبدیل کنید. آرایه های دستوری به سادگی آرایه های جاوا اسکریپت هستند که با فرمت خاصی مطابقت دارند. اولین عنصر در یک آرایه دستوری نام روش شی ردیاب است که می خواهید فراخوانی کنید. باید یک رشته باشد. بقیه عناصر آرگومان هایی هستند که می خواهید به متد شی ردیاب منتقل کنید. اینها می توانند هر مقدار جاوا اسکریپت باشند.

کد زیر با استفاده از سینتکس سنتی، _trackPageview() را فراخوانی می کند:

var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();

کد معادل در نحو ناهمزمان به دو فراخوانی _gaq.push نیاز دارد.

_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);

در نحو ناهمزمان، ایجاد شی ردیاب به صورت ضمنی است، اما ما همچنان به راهی برای تنظیم شناسه ویژگی وب برای ردیاب نیاز داریم. برای ارائه این قابلیت متد _setAccount اضافه شده است. همه روش‌های شی ردیاب دیگر در ردیابی ناهمزمان و سنتی یکسان هستند. فقط نحو متفاوت است.

برای اطلاعات بیشتر در مورد نحو ناهمزمان، به مرجع پیگیری برای روش _gaq.push مراجعه کنید.

بازگشت به بالا

ردیابی با HTML Event Handlers

نحو ردیابی ناهمزمان نیز باید از درون کنترل کننده رویداد DOM استفاده شود. برای مثال، دکمه زیر با کلیک روی آن یک رویداد ایجاد می کند.

<button onclick="_gaq.push(['_trackEvent', 'button3', 'clicked'])"></button>

حتی اگر این دکمه قبل از اتمام بارگیری ga.js توسط مرورگر کلیک شود، رویداد ضبط شده و در نهایت اجرا خواهد شد. با استفاده از ردیابی سنتی، مرورگر ممکن است در این شرایط استثنایی ایجاد کند.

بازگشت به بالا

فشار دادن توابع به صف

علاوه بر آرایه های دستوری، می توانید اشیاء تابع را نیز در صف _gaq قرار دهید. توابع می توانند حاوی هر جاوا اسکریپت دلخواه باشند و مانند آرایه های دستوری، به ترتیبی که روی _gaq قرار می گیرند، اجرا می شوند. این تکنیک برای فراخوانی API های ردیابی که مقادیر را برمی گرداند مفید است. به عنوان مثال، کد زیر یک URL پیوند دهنده ایجاد می کند و ویژگی href را برای یک پیوند با نتیجه تنظیم می کند.

_gaq.push(function() {
  var pageTracker = _gat._getTracker('UA-XXXXX-X');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

مثال بالا از _gat برای ایجاد یک شی ردیاب استفاده می کند، اما چون به یک متغیر محلی اختصاص داده شده است، کد خارج از تابع نمی تواند از آن استفاده کند. در حالی که این قابل قبول است، می توانید از روش _gat._createTracker برای ایجاد یک شی دائمی و قابل دسترسی جهانی استفاده کنید. کد زیر نشان می دهد که چگونه این کار می کند.

_gaq.push(function() {
  var pageTracker = _gat._createTracker('UA-XXXXX-X', 'myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

_gaq.push(['myTracker._trackPageview']);

مثال بالا یک ردیاب ناهمزمان در داخل تابع ایجاد می‌کند و بعداً با نام در آرایه فرمان به آن ارجاع می‌دهد.

مورد استفاده مخالف نیز امکان پذیر است. به عنوان مثال، اگر نیاز به استفاده از یک شی ردیاب ناهمزمان ایجاد شده از طریق یک آرایه دستوری قبلاً فشار داده شده دارید، از روش _gat._getTrackerByName استفاده کنید. کد زیر نحوه عملکرد آن را نشان می دهد.

_gaq.push(['myTracker._setAccount', 'UA-XXXXX-X']);

_gaq.push(function() {
  var pageTracker = _gat._getTrackerByName('myTracker');
  var link = document.getElementById('my-link-id');
  link.href = pageTracker._getLinkerUrl('http://example.com/');
});

بازگشت به بالا

یک فشار، چند دستور

به جای تایپ _gaq.push(...) برای هر تماس، می توانید همه دستورات خود را به یکباره فشار دهید. کد زیر این تکنیک را نشان می دهد.

_gaq.push(
  ['_setAccount', 'UA-XXXXX-X'],
  ['_setDomainName', 'example.com'],
  ['_setCustomVar', 1, 'Section', 'Life & Style', 3],
  ['_trackPageview']
);

این کار به این دلیل کار می کند که روش _gaq.push از روش Array.push تقلید می کند، که اجازه می دهد چندین آیتم را با یک فراخوانی فشار دهید.

بازگشت به بالا

تقسیم Snippet

اگر ترجیح می دهید قطعه Analytics را در پایین صفحه قرار دهید، باید بدانید که لازم نیست کل قطعه را در پایین صفحه قرار دهید. همچنان می‌توانید با تقسیم قطعه به دو نیم، بیشتر مزایای بارگیری ناهمزمان را حفظ کنید - نیمه اول را در بالای صفحه نگه دارید و بقیه را به پایین ببرید. از آنجایی که قسمت اول قطعه ردیابی تأثیر کمی بر رندر صفحه ندارد، می توانید آن قسمت را در بالا رها کنید و بخشی از قطعه را که ga.js را درج می کند در پایین قرار دهید.

صفحه ای با قطعه ناهمزمان به دو نیم شده ممکن است به شکل زیر باشد:

<html>

<head>
  <script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_trackPageview']);
  </script>
</head>

<body>
  <p>Page Content</p>

  <script src="some_random_script.js"></script>

  <p>Page Content</p>

  <script type="text/javascript">  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script> </body> </html>

هر دو قطعه کد باید در تگ های اسکریپت خود پیچیده شوند، اما تنها شش خط آخر قطعه ناهمزمان اصلی باید به پایین منتقل شوند. تمام خطوطی که متدها را به _gaq فشار می دهند، می توانند در بالا باقی بمانند.

بازگشت به بالا

اجتناب از دام های رایج

هنگام استفاده از سینتکس ناهمزمان یا سنتی، موارد زیر را در نظر داشته باشید:

  • نام روش ها به حروف بزرگ و کوچک حساس هستند.
    اگر از نام روشی بدون پوشش مناسب استفاده کنید، فراخوانی روش شما کار نخواهد کرد. مثال‌ها:
    _gaq.push(['_trackpageview']);   // bad
    _gaq.push(['_trackPageview']);   // good
  • از نام روش های صحیح استفاده کنید.
    اگر ردیابی شما به درستی کار نمی کند، بررسی کنید که از نام صحیح روش استفاده می کنید. مثال‌ها:
    _gaq.push(['_setDomain', 'example.com']);       // bad
    _gaq.push(['_setDomainName', 'example.com']);   // good
    
  • فقط رشته ها باید با نقل قول ارسال شوند . همه انواع دیگر باید بدون نقل قول رها شوند.
    هر مقداری که رشته نیست، مانند یک بولی، حروف الفبای شی، توابع یا آرایه، باید بدون علامت نقل قول ارسال شود. زمانی که در حال عبور از چیزی هستید که قرار است به عنوان رشته تفسیر شود، فقط از علامت نقل قول استفاده کنید. اگر از نحو سنتی مهاجرت می کنید، هر پارامتر تابعی که بدون علامت نقل قول ارسال شده است باید در نحو ناهمزمان بدون نقل قول باقی بماند. مثال:
    _gaq.push(['_setAllowLinker', 'false']);    // bad
    _gaq.push(['_setAllowLinker', false]);      // good
    
  • اطمینان حاصل کنید که رشته ها حاوی فضای خالی اصلی یا انتهایی نیستند.
    مثال‌ها:
    _gaq.push(['_setAccount', ' UA-65432-1']);    // bad
    _gaq.push(['_setAccount', 'UA-65432-1']);     // good
    

بازگشت به بالا

غیرفعال کردن ردیابی

در برخی موارد، ممکن است لازم باشد که کد رهگیری Google Analytics را در یک صفحه بدون نیاز به حذف قطعه کد غیرفعال کنید. به عنوان مثال، اگر سیاست حفظ حریم خصوصی سایت شما شامل امکان انصراف بازدیدکننده از ردیابی Google Analytics باشد، ممکن است این کار را انجام دهید.

قطعه ردیابی ga.js اکنون شامل یک ویژگی پنجره است که وقتی روی true تنظیم شود، قطعه ردیابی را از ارسال داده به Google Analytics غیرفعال می کند. هنگامی که Google Analytics تلاش می کند یک کوکی تنظیم کند یا داده ها را به سرورهای Google Analytics ارسال کند، بررسی می کند که آیا این ویژگی روی true تنظیم شده است یا خیر. اگر اینطور باشد، همان تأثیری را خواهد داشت که بازدیدکننده افزونه مرورگر انصراف Google Analytics را نصب کرده باشد.

برای غیرفعال کردن ردیابی، ویژگی پنجره زیر را روی true تنظیم کنید:

window['ga-disable-UA-XXXXXX-Y'] = true;

جایی که مقدار UA-XXXXXX-Y مربوط به شناسه دارایی وب است که می‌خواهید ردیابی را در آن غیرفعال کنید.

این ویژگی پنجره باید قبل از فراخوانی کد رهگیری تنظیم شود. این ویژگی باید در هر صفحه ای که می خواهید ردیابی Google Analytics را غیرفعال کنید، تنظیم شود. اگر ویژگی تنظیم نشده باشد یا روی false تنظیم نشده باشد، ردیابی طبق معمول کار خواهد کرد.

بنابراین، برای مثال، اگر کد رهگیری Google Analytics شما در یک صفحه شامل موارد زیر باشد:

_gaq.push['_setAccount', 'UA-123456-1']

و می‌خواهید آن کد رهگیری را برای تنظیم کوکی‌ها یا ارسال داده‌ها به Google Analytics غیرفعال کنید، سپس قبل از فراخوانی کد رهگیری از کد زیر استفاده می‌کنید:

window['ga-disable-UA-123456-1'] = true;

اگر از چندین ردیاب در صفحه‌ای با چندین شناسه دارایی وب استفاده می‌کنید، باید متغیر window['ga-disable-UA-XXXXXX-Y'] برای هر ویژگی وب روی true تنظیم کنید تا ردیابی Google Analytics در آن صفحه کاملاً غیرفعال شود.

مثال

در اینجا یک مثال ساده از کدهایی وجود دارد که می توانید از آنها برای ارائه عملکرد انصراف برای کاربران خود استفاده کنید.

ابتدا یک لینک HTML جدید به سایت خود اضافه کنید تا منطق انصراف را اجرا کنید:

<a href="javascript:gaOptout()">Click here to opt-out of Google Analytics</a>

سپس قطعه کد زیر را قبل از قطعه کد ga.js اضافه کنید. مطمئن شوید که مقدار gaProperty را از UA-XXXX-Y به ویژگی مورد استفاده در سایت خود جایگزین کنید. این همان مقداری است که به دستور _setAccount می دهید.

<script>
// Set to the same value as the web property used on the site
var gaProperty = 'UA-XXXX-Y';

// Disable tracking if the opt-out cookie exists.
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf(disableStr + '=true') > -1) {
  window[disableStr] = true;
}

// Opt-out function
function gaOptout() {
  document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
  window[disableStr] = true;
}
</script>

وقتی کاربر روی پیوند HTML انصراف کلیک می کند، تابع gaOptout سفارشی اجرا می شود. این یک کوکی برای مدت طولانی در آینده تنظیم می کند و جمع آوری داده های analytics.js را غیرفعال می کند. وقتی کاربر به این سایت باز می گردد، اسکریپت بالا بررسی می کند که آیا کوکی انصراف تنظیم شده است یا خیر. اگر چنین باشد، جمع آوری داده های analytics.js نیز غیرفعال می شود.

اجبار SSL (HTTPS)

برای اینکه Google Analytics را مجبور کنید همیشه داده ها را با استفاده از SSL ارسال کند، حتی از صفحات ناامن (HTTP)، از روش _gat._forceSSL مانند این مثال استفاده کنید:

_gaq.push(['_setAccount', 'UA-12345-1']);
_gaq.push(['_gat._forceSSL']);       // Send all hits using SSL, even from insecure (HTTP) pages.
_gaq.push(['_trackPageview']);

بازگشت به بالا