ה-API של כלי השירות של המסוף מכיל אוסף של פונקציות נוחות לביצוע משימות נפוצות: בחירה ובדיקה של רכיבי DOM, שאילתות של אובייקטים, הצגת נתונים בפורמט קריא, עצירה והפעלה של הפרופילר, מעקב אחרי אירועי DOM וקריאות לפונקציות ועוד.
מחפשים את הפונקציות console.log(), console.error() ואת שאר הפונקציות של console.*? מידע נוסף זמין במאמר בנושא הפניית Console API.
$_
הפונקציה $_ מחזירה את הערך של הביטוי שהוערך לאחרונה.
בדוגמה הבאה, מתבצעת הערכה של ביטוי פשוט (2 + 2). לאחר מכן מתבצעת הערכה של הנכס $_, שמכיל את אותו ערך:
בדוגמה הבאה, הביטוי שמוערך מכיל בהתחלה מערך של שמות. הערכה של $_.length כדי למצוא את אורך המערך, הערך שמאוחסן ב-$_ משתנה והופך לביטוי האחרון שהוערך, 4:
0$ – 4$
הפקודות $0, $1, $2, $3 ו-$4 פועלות כהפניה היסטורית לחמשת רכיבי ה-DOM האחרונים שנבדקו בחלונית Elements או לחמשת אובייקטי ה-heap של JavaScript האחרונים שנבחרו בחלונית Profiles. $0 מחזירה את הרכיב או אובייקט ה-JavaScript שנבחרו לאחרונה, $1 מחזירה את הרכיב או אובייקט ה-JavaScript שנבחרו לפני האחרון, וכן הלאה.
בדוגמה הבאה, רכיב img נבחר בחלונית Elements. במגירה Console, בוצעה הערכה של $0 ומוצג אותו רכיב:
בתמונה שלמטה אפשר לראות אלמנט אחר שנבחר באותו דף. הערך $0 מתייחס עכשיו לרכיב שנבחר לאחרונה, ואילו הערך $1 מחזיר את הרכיב שנבחר קודם:
$(selector [, startNode])
$(selector) מחזירה את ההפניה לרכיב ה-DOM הראשון עם הסלקטור ב-CSS שצוין. כשמפעילים את הפונקציה עם ארגומנט אחד, היא משמשת כקיצור דרך לפונקציה document.querySelector().
בדוגמה הבאה מוחזרת הפניה לרכיב <img> הראשון במסמך:
לוחצים לחיצה ימנית על התוצאה שמוחזרת ובוחרים באפשרות הצגה בחלונית הרכיבים כדי למצוא אותה ב-DOM, או באפשרות גלילה לתצוגה כדי להציג אותה בדף.
הדוגמה הבאה מחזירה הפניה לרכיב שנבחר כרגע ומציגה את המאפיין src שלו:
הפונקציה הזו תומכת גם בפרמטר שני, startNode, שמציין 'אלמנט' או Node שממנו יתבצע החיפוש של אלמנטים. ערך ברירת המחדל של הפרמטר הזה הוא document.
בדוגמה הבאה מוחזרת הפניה לאלמנט img הראשון שהוא צאצא של devsite-header-background, ומוצג המאפיין 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);
}
אלמנטים מסוג<img>
שמופיעים במסמך הנוכחי אחרי הצומת שנבחר:
let images = $$('img', document.querySelector('.devsite-header-background'));
for (let each of images) {
console.log(each.src);
}
$x(path [, startNode])
$x(path) מחזירה מערך של רכיבי DOM שתואמים לביטוי XPath הנתון.
לדוגמה, הפקודה הבאה מחזירה את כל רכיבי <p> בדף:
$x("//p")
בדוגמה הבאה מוצגים כל רכיבי <p> שמכילים רכיבי <a>:
$x("//p[a]")
בדומה לפונקציות אחרות של בחירה, ל-$x(path) יש פרמטר שני אופציונלי, startNode, שמציין אלמנט או צומת שממנו יתבצע החיפוש של אלמנטים.
clear()
clear() מנקה את היסטוריית המסוף.
clear();
copy(object)
copy(object) מעתיקה ללוח את ייצוג המחרוזת של האובייקט שצוין.
copy($0);
debug(function)
כשקוראים לפונקציה שצוינה, מאתחלים את מאתר הבאגים ומפסיקים את הביצוע בתוך הפונקציה בחלונית Sources, כדי לאפשר מעבר שלב אחר שלב בקוד וניפוי באגים.
debug(getData);
משתמשים בפקודה undebug(fn) כדי להפסיק את ההפסקה בפונקציה, או בממשק המשתמש כדי להשבית את כל נקודות העצירה.
מידע נוסף על נקודות עצירה זמין במאמר השהיית הקוד באמצעות נקודות עצירה.
dir(object)
dir(object) מציג רשימה בסגנון אובייקט של כל המאפיינים של האובייקט שצוין. ה-method הזה הוא קיצור דרך ל-method console.dir() של Console API.
בדוגמה הבאה מוצג ההבדל בין הערכה של document.body ישירות בשורת הפקודה לבין שימוש ב-dir() כדי להציג את אותו רכיב:
document.body;
dir(document.body);
מידע נוסף זמין במאמר 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);
כשמעבירים פונקציה לבדיקה, הפונקציה פותחת את המסמך בחלונית מקורות כדי שתוכלו לבדוק אותו.
getEventListeners(object)
getEventListeners(object) מחזירה את משתמשי ה-event listener שרשומים באובייקט שצוין. ערך ההחזרה הוא אובייקט שמכיל מערך לכל סוג אירוע רשום (לדוגמה, click או keydown). האיברים בכל מערך הם אובייקטים שמתארים את מאזין האירועים שרשום לכל סוג. לדוגמה, הפקודה הבאה מציגה רשימה של כל מאזיני האירועים שרשומים באובייקט document:
getEventListeners(document);
אם יותר ממאזין אחד רשום באובייקט שצוין, המערך מכיל רכיב לכל מאזין. בדוגמה הבאה, יש שני event listeners שרשומים ברכיב document לאירוע click:
אפשר להרחיב כל אחד מהאובייקטים האלה כדי לראות את המאפיינים שלו:
מידע נוסף זמין במאמר בדיקת מאפייני אובייקטים.
keys(object)
keys(object) מחזירה מערך שמכיל את שמות המאפיינים ששייכים לאובייקט שצוין. כדי לקבל את הערכים המשויכים של אותם מאפיינים, משתמשים בפונקציה values().
לדוגמה, נניח שהאפליקציה שלכם הגדירה את האובייקט הבא:
let player = {
"name": "Parzival",
"number": 1,
"state": "ready",
"easterEggs": 3
};
בהנחה ש-player הוגדר במרחב השמות הגלובלי (לצורך פשטות), הקלדה של keys(player) ו-values(player) במסוף תניב את התוצאה הבאה:
monitor(function)
כשקוראים לפונקציה שצוינה, הודעה נרשמת ביומן במסוף ומצוין בה שם הפונקציה יחד עם הארגומנטים שמועברים לפונקציה כשהיא נקראת.
function sum(x, y) {
return x + y;
}
monitor(sum);
כדי להפסיק את המעקב, משתמשים ב-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")
כדי להפסיק את יצירת הפרופיל ולראות את התוצאות במסלול ביצועים > ראשי:
profileEnd("Profile 1")
התוצאה במסלול ביצועים > ראשי:
אפשר גם להטמיע פרופילים בתוך פרופילים אחרים. לדוגמה, הפעולות הבאות יפעלו בכל סדר:
profile('A');
profile('B');
profileEnd('A');
profileEnd('B');
queryObjects(Constructor)
מתקשרים אל queryObjects(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);
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);