הפניית API של Console Utilities

Kayce Basques
Kayce Basques
Sofia Emelianova
Sofia Emelianova

‫Console Utilities API מכיל אוסף של פונקציות נוחות לביצוע משימות נפוצות: בחירה ובדיקה של רכיבי DOM, שליחת שאילתות לאובייקטים, הצגת נתונים בפורמט קריא, עצירה והפעלה של כלי לניתוח ביצועים (profiler), מעקב אחרי אירועי DOM וקריאות להפעלת פונקציות ועוד.

מחפשים את console.log(), console.error() ואת שאר הפונקציות של console.*? מאמרי העזרה של ה-API של מסוף.

$_

הפונקציה $_ מחזירה את הערך של הביטוי האחרון שהיא העריכה.

בדוגמה הבאה, מתבצעת הערכה של ביטוי פשוט (2 + 2). לאחר מכן מתבצעת הערכה של הנכס $_, שמכיל את אותו ערך:

‫$_ הוא הביטוי האחרון שהוערך.

בדוגמה הבאה, הביטוי שמוערך מכיל בהתחלה מערך של שמות. הערכת הביטוי $_.length כדי למצוא את אורך המערך, הערך שמאוחסן ב-$_ משתנה והופך לביטוי האחרון שהוערך, 4:

הערך של $_ משתנה כשמריצים פקודות חדשות.

$0 - $4

הפקודות $0, ‏ $1, ‏ $2, ‏ $3 ו-$4 פועלות כהפניה היסטורית לחמשת רכיבי ה-DOM האחרונים (כולל רכיבי פסאודו כמו ::before או ::after) שנבדקו בחלונית Elements או לחמשת אובייקטי ה-heap של JavaScript האחרונים שנבחרו בחלונית Profiles. ‫$0 מחזיר את הרכיב או האובייקט ב-JavaScript שנבחרו לאחרונה, $1 מחזיר את הרכיב או האובייקט שנבחרו לפני כן, וכן הלאה.

בדוגמה הבאה, רכיב img נבחר בחלונית Elements (רכיבים). בחלונית ההזזה Console, הערך של $0 חושב ומוצג בו אותו רכיב:

דוגמה של $0.

בתמונה הבאה מוצג רכיב אחר שנבחר באותו דף. המשתנה $0 מתייחס עכשיו לרכיב שנבחר, והמשתנה $1 מחזיר את הרכיב שנבחר קודם:

דוגמה של 4 ש"ח.

$(selector [, startNode])

הפונקציה $(selector) מחזירה את ההפניה לרכיב ה-DOM הראשון עם הסלקטור ב-CSS שצוין. כשמפעילים את הפונקציה עם ארגומנט אחד, היא משמשת כקיצור דרך לפונקציה document.querySelector().

הדוגמה הבאה מחזירה הפניה לרכיב <img> הראשון במסמך:

דוגמה ל-‎ $('img')‎.

לוחצים לחיצה ימנית על התוצאה שמוחזרת ובוחרים באפשרות הצגה בחלונית הרכיבים כדי למצוא אותה ב-DOM, או באפשרות גלילה לתצוגה כדי להציג אותה בדף.

הדוגמה הבאה מחזירה הפניה לרכיב שנבחר כרגע ומציגה את המאפיין src שלו:

דוגמה ל-$('img').src.

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

הדוגמה הבאה מחזירה הפניה לרכיב img הראשון שהוא צאצא של devsite-header-background, ומציגה את המאפיין src שלו:

דוגמה ל-$('img', div).src.

$$(selector [, startNode])

$$(selector) מחזירה מערך של אלמנטים שתואמים לסלקטור ב-CSS שצוין. הפקודה הזו שוות ערך לקריאה ל-Array.from(document.querySelectorAll()).

בדוגמה הבאה משתמשים ב-$$() to create an array of all <img> elements in the current document and displays the value of each element's src property:

let images = $$('img');
for (let each of images) {
  console.log(each.src);
}

רכיבי דוגמה לשימוש ב-<!-- notranslate l10n-placeholder: l10n-placeholder3 -->()</code> כדי ליצור מערך של כל <code translate=<img> שמופיעים במסמך הנוכחי אחרי הצומת שנבחר:

let images = $$('img', document.querySelector('.devsite-header-background'));
for (let each of images) {
  console.log(each.src);
}

דוגמה לשימוש ב-‎ $()‎ כדי לבחור את כל התמונות שמופיעות אחרי רכיב ה-div של הבחירה במסמך ולהציג את המקורות שלהן.

$x(path [, startNode])‎

‫$x(path) מחזירה מערך של רכיבי DOM שתואמים לביטוי ה-XPath הנתון.

לדוגמה, הפקודה הבאה מחזירה את כל רכיבי ה-<p> בדף:

$x("//p")

דוגמה לשימוש בבורר XPath.

בדוגמה הבאה מוחזרים כל הרכיבים מסוג <p> שמכילים רכיבים מסוג <a>:

$x("//p[a]")

דוגמה לשימוש בבורר XPath מורכב יותר.

בדומה לפונקציות אחרות של בחירה, לפונקציה $x(path) יש פרמטר שני אופציונלי, startNode, שמציין אלמנט או צומת שממנו יתבצע החיפוש של אלמנטים.

דוגמה לשימוש בבורר XPath עם startNode.

clear()‎

‫clear() מנקה את ההיסטוריה של המסוף.

clear();

copy(object)

‫copy(object) מעתיקה ללוח את הייצוג של האובייקט שצוין כמחרוזת.

copy($0);

debug(function)‎

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

debug(getData);

הפסקת ביצוע בתוך פונקציה באמצעות debug().

אפשר להשתמש ב-undebug(fn) כדי להפסיק את העצירה בפונקציה, או להשתמש בממשק המשתמש כדי להשבית את כל נקודות העצירה.

מידע נוסף על נקודות עצירה זמין במאמר Pause Your Code With Breakpoints (השהיית הקוד באמצעות נקודות עצירה).

dir(object)

הפונקציה dir(object) מציגה רשימה בסגנון אובייקט של כל המאפיינים של האובייקט שצוין. השיטה הזו היא קיצור דרך לשיטה console.dir() של Console API.

בדוגמה הבאה מוצג ההבדל בין הערכת document.body ישירות בשורת הפקודה לבין שימוש ב-dir() כדי להציג את אותו רכיב:

document.body;
dir(document.body);

רישום ביומן של document.body עם הפונקציה dir() ובלי הפונקציה הזו.

מידע נוסף זמין ברשומה console.dir() ב-Console API.

dirxml(object)‎

‫dirxml(object) מדפיס ייצוג XML של האובייקט שצוין, כפי שמופיע בחלונית Elements. השיטה הזו זהה לשיטה console.dirxml().

inspect(object/function)

‫inspect(object/function) פותח את הרכיב או האובייקט שצוינו ובוחר אותם בחלונית המתאימה: בחלונית Elements לרכיבי DOM או בחלונית Profiles לאובייקטים של ערימת JavaScript.

בדוגמה הבאה, התג document.body נפתח בחלונית Elements:

inspect(document.body);

בדיקת רכיב באמצעות inspect().

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

getEventListeners(object)

הפונקציה getEventListeners(object) מחזירה את רכיבי ה-event listener שרשומים באובייקט שצוין. הערך המוחזר הוא אובייקט שמכיל מערך לכל סוג אירוע רשום (לדוגמה, click או keydown). האיברים בכל מערך הם אובייקטים שמתארים את מאזין האירועים שנרשם לכל סוג. לדוגמה, הפקודה הבאה מציגה רשימה של כל רכיבי event listener שרשומים באובייקט document:

getEventListeners(document);

הפלט של השימוש ב-getEventListeners()‎.

אם יותר ממאזין אחד רשום לאובייקט שצוין, המערך מכיל איבר לכל מאזין. בדוגמה הבאה, יש שני רכיבי event listener שרשומים באלמנט document לאירוע click:

מאזינים מרובים.

אפשר להרחיב כל אחד מהאובייקטים האלה כדי לבדוק את המאפיינים שלהם:

תצוגה מורחבת של אובייקט המאזין.

מידע נוסף זמין במאמר בנושא בדיקת מאפייני אובייקטים.

keys(object)

‫keys(object) מחזירה מערך שמכיל את שמות הנכסים ששייכים לאובייקט שצוין. כדי לקבל את הערכים המשויכים של אותם מאפיינים, משתמשים בפונקציה values().

לדוגמה, נניח שהאפליקציה שלכם הגדירה את האובייקט הבא:

let player = {
    "name": "Parzival",
    "number": 1,
    "state": "ready",
    "easterEggs": 3
};

בהנחה ש-player הוגדר במרחב השמות הגלובלי (לצורך פשטות), הקלדה של keys(player) ו-values(player) במסוף תניב את התוצאה הבאה:

דוגמה לשימוש בשיטות keys()‎ ו-values()‎.

monitor(function)

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

function sum(x, y) {
  return x + y;
}
monitor(sum);

דוגמה לשיטה monitor().

כדי להפסיק את המעקב, משתמשים ב-unmonitor(function).

monitorEvents(object [, events])

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

הקוד הבא עוקב אחרי כל אירועי שינוי הגודל באובייקט החלון.

monitorEvents(window, "resize");

מעקב אחרי אירועים של שינוי גודל החלון.

הקוד הבא מגדיר מערך למעקב אחרי אירועי resize ו-scroll באובייקט window:

monitorEvents(window, ["resize", "scroll"])

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

סוג האירוע והאירועים הממופים התואמים
עכבר‫"mousedown",‏ "mouseup",‏ "click",‏ "dblclick",‏ "mousemove",‏ "mouseover",‏ "mouseout",‏ "mousewheel"
מקש"keydown", "keyup", "keypress", "textInput"
מגע‫'touchstart',‏ 'touchmove',‏ 'touchend',‏ 'touchcancel'
עוצמת הקול‫"resize",‏ "scroll",‏ "zoom",‏ "focus",‏ "blur",‏ "select",‏ "change",‏ "submit",‏ "reset"

לדוגמה, הקוד הבא משתמש בסוג האירוע "key" כדי להפעיל את כל האירועים המרכזיים המתאימים בשדה טקסט קלט שנבחר כרגע בחלונית Elements.

monitorEvents($0, "key");

הנה דוגמה לפלט אחרי הקלדת תווים בשדה הטקסט:

מעקב אחרי אירועים מרכזיים.

כדי להפסיק את המעקב, משתמשים ב-unmonitorEvents(object[, events]).

‫profile([name]) ו-profileEnd([name])

הפונקציה profile() מתחילה סשן פרופיילינג של המעבד (CPU) ב-JavaScript עם שם אופציונלי. profileEnd() משלים את הפרופיל, פותח אוטומטית את החלונית ביצועים ומציג את התוצאות בטראק הראשי.

כדי להתחיל את יצירת הפרופיל:

profile("Profile 1")

כדי להפסיק את יצירת הפרופיל ולראות את התוצאות בטראק Performance > Main:

profileEnd("Profile 1")

התוצאה בטראק ביצועים > ראשי:

פרופיל 1 במסלול הראשי של הביצועים.

אפשר גם להטמיע פרופילים בתוך פרופילים אחרים. לדוגמה, אפשר להשתמש בכל אחד מהסדרים הבאים:

profile('A');
profile('B');
profileEnd('A');
profileEnd('B');

queryObjects(Constructor)

קוראים ל-queryObjects(Constructor) מהמסוף כדי להחזיר מערך של אובייקטים שנוצרו באמצעות ה-constructor שצוין. לדוגמה:

  • ‫queryObjects(Promise). הפונקציה מחזירה את כל המופעים של Promise.
  • queryObjects(HTMLElement). הפונקציה מחזירה את כל רכיבי ה-HTML.
  • ‫queryObjects(foo), כאשר foo הוא שם הכיתה. מחזירה את כל האובייקטים שנוצרו באמצעות new foo().

ההיקף של queryObjects() הוא הקשר ההרצה שנבחר כרגע במסוף.

table(data [, columns])

כדי לתעד נתוני אובייקטים בפורמט של טבלה, מעבירים אובייקט נתונים עם כותרות עמודות אופציונליות. זהו קיצור דרך אל console.table().

לדוגמה, כדי להציג רשימה של שמות באמצעות טבלה במסוף, מבצעים את הפעולות הבאות:

let names = [
  { firstName: "John", lastName: "Smith" },
  { firstName: "Jane", lastName: "Doe" },
];
table(names);

דוגמה לשיטה table()‎.

כדי להעתיק טבלה מתועדת ללוח כטבלת Markdown בפורמט או כנתוני CSV, לוחצים לחיצה ימנית על הטבלה במסוף ובוחרים באפשרות ההעתקה המתאימה מתפריט ההקשר.

undebug(function)‎

הפונקציה undebug(function) מפסיקה את ניפוי הבאגים של הפונקציה שצוינה, כך שכאשר הפונקציה נקראת, מנפה הבאגים לא מופעל יותר. המאפיין הזה משמש בשילוב עם debug(fn).

undebug(getData);

unmonitor(function)‎

‫unmonitor(function) מפסיק את המעקב אחרי הפונקציה שצוינה. משתמשים בה בשילוב עם monitor(fn).

unmonitor(getData);

unmonitorEvents(object [, events])

הפונקציה unmonitorEvents(object[, events]) מפסיקה את המעקב אחרי אירועים של האובייקט והאירועים שצוינו. לדוגמה, הפקודה הבאה מפסיקה את כל המעקב אחרי אירועים באובייקט window:

unmonitorEvents(window);

אפשר גם להפסיק באופן סלקטיבי את המעקב אחרי אירועים ספציפיים באובייקט. לדוגמה, הקוד הבא מתחיל לעקוב אחרי כל אירועי העכבר ברכיב שנבחר כרגע, ואז מפסיק לעקוב אחרי אירועי mousemove (אולי כדי לצמצם את הרעש בפלט של המסוף):

monitorEvents($0, "mouse");
unmonitorEvents($0, "mousemove");

values(object)‎

‫values(object) מחזירה מערך שמכיל את הערכים של כל המאפיינים ששייכים לאובייקט שצוין.

let player = {
    "name": "Parzival",
    "number": 1,
    "state": "ready",
    "easterEggs": 3
};

values(player);

התוצאה של הערכים(שחקן).