מבוא ל-ga.js (מדור קודם)

ga.js היא ספריית JavaScript למדידת אופן האינטראקציה של משתמשים עם האתר שלך. זוהי ספרייה מדור קודם. אם אתם מתחילים להשתמש ב-Google Analytics, כדאי לכם להשתמש בספריית המעקב העדכנית ביותר, analytics.js.

מדריך למתחילים בנושא קוד מעקב

קטע הקוד של Analytics הוא קטע קצר של קוד JavaScript שמודבק בדפים שלך. כשמפעילים את המעקב של Google Analytics, המערכת מוסיפה ga.js לדף. כדי להשתמש בו בדפים שלך, צריך להעתיק את קטע הקוד שבהמשך ולהחליף את 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 לתור, צריך להמיר אותה מהתחביר המסורתי של JavaScript למערך פקודות. מערכי פקודות הם פשוט מערכי JavaScript שתואמים לפורמט מסוים. הרכיב הראשון במערך פקודות הוא השם של שיטת אובייקט המעקב שאליה רוצים לקרוא. היא חייבת להיות מחרוזת. שאר הרכיבים הם הארגומנטים שרוצים להעביר לשיטה של אובייקט המעקב. הערכים האלה יכולים להיות כל ערך JavaScript.

הקוד הבא קורא ל-_trackPageview() באמצעות התחביר המסורתי:

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

לקוד המקביל בתחביר האסינכרוני נדרשות שתי קריאות ל-_gaq.push.

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

בתחביר האסינכרוני, יצירת אובייקט המעקב משתמעת, אבל עדיין אנחנו צריכים דרך להגדיר את מזהה נכס האינטרנט עבור מכשיר המעקב. השיטה _setAccount נוספה כדי לספק את היכולת הזו. כל השיטות האחרות של אובייקט מעקב זהות במעקב האסינכרוני וגם במעקב המסורתי. רק התחביר שונה.

למידע נוסף על התחביר האסינכרוני, כדאי לעיין בחומר העזר בנושא מעקב של השיטה _gaq.push.

חזרה למעלה

מעקב באמצעות רכיבי handler של אירועי HTML

צריך להשתמש בתחביר המעקב האסינכרוני גם מתוך הגורמים המטפלים באירועים של DOM. לדוגמה, הלחצן הבא יוצר אירוע כשמשתמש לוחץ עליו.

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

גם אם לוחצים על הלחצן הזה לפני שהדפדפן מסיים לטעון את ga.js, האירוע יוקלט ובסופו של דבר יופעל. כשמשתמשים במעקב מסורתי, הדפדפן עלול לגרום לחריגה במצב כזה.

חזרה למעלה

דחיפת פונקציות לתור

בנוסף למערכי פקודות, אפשר גם לדחוף אובייקטים של פונקציות לתור _gaq. הפונקציות יכולות להכיל כל קוד JavaScript שרירותי, וכמו מערכי פקודות, הן מופעלות לפי הסדר שבו הן נדחפות אל _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']);

בדוגמה שלמעלה נוצר מכשיר מעקב אסינכרוני בתוך הפונקציה, ואז מפנה אליו מאוחר יותר לפי השם במערך הפקודות.

אפשר גם להשתמש בתרחיש ההפוך. לדוגמה, אם אתם צריכים להשתמש באובייקט מעקב אסינכרוני שנוצר באמצעות מערך פקודות שנדחף בעבר, צריך להשתמש ב-method _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, שמאפשרת לדחוף פריטים מרובים באמצעות הפעלה אחת.

חזרה למעלה

פיצול קטע הטקסט

אם ברצונך למקם את קטע הקוד של 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 יכולים להישאר למעלה.

חזרה למעלה

הימנעות ממלכודות נפוצות

אם משתמשים בתחביר אסינכרוני או בתחביר מסורתי, חשוב לזכור:

  • שמות השיטות הם תלויי אותיות רישיות.
    אם משתמשים בשם שיטה ללא אותיות רישיות וקטנות, קריאות ל-method לא יפעלו. לדוגמה:
    _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 מנסה להגדיר קובץ cookie או לשלוח נתונים חזרה לשרתים של 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']

וברצונך להשבית את קוד המעקב מהגדרת קובצי cookie או משליחת נתונים חזרה אל 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 בהתאמה אישית. הוא יגדיר קובץ cookie למשך זמן רב בעתיד ותשבית את איסוף הנתונים של analytics.js. כשמשתמש חוזר לאתר הזה, הסקריפט שלמעלה יבדוק אם הוגדר קובץ cookie לביטול ההסכמה. אם היא מופעלת, איסוף הנתונים של 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']);

חזרה למעלה