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

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

הפעלה מהירה של קוד המעקב

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

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

איך פועל התחביר האסינכרוני

האובייקט _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

יש להשתמש גם בתחביר המעקב האסינכרוני מתוך גורמי handler של אירועי 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']);

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

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

חזרה למעלה

מניעת טעויות נפוצות

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

  • שמות השיטות תלויי אותיות רישיות.
    אם משתמשים בשם השיטה ללא אותיות רישיות מתאימות, קריאות השיטה שלכם לא יפעלו. דוגמאות:
    _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 כולל עכשיו נכס חלון שיש להשבית את שליחת הנתונים ל-Google Analytics כאשר הוא מוגדר כ-true. כש-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

כדי לאלץ את 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']);

חזרה למעלה