مرجع واجهة برمجة تطبيقات Console Utilities API

Kayce Basques
Kayce Basques
Sofia Emelianova
Sofia Emelianova

تحتوي Console Utilities API على مجموعة من الدوال الملائمة لتنفيذ المهام الشائعة: اختيار عناصر DOM وفحصها، والاستعلام عن الكائنات، وعرض البيانات بتنسيق قابل للقراءة، وإيقاف المحلّل وبدء تشغيله، ومراقبة أحداث DOM واستدعاءات الدوال، وغير ذلك.

هل تبحث عن console.log() وconsole.error() وبقية دوال console.*؟ يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات Console.

$_

تعرض $_ قيمة آخر تعبير تم تقييمه.

في المثال التالي، يتم تقييم تعبير بسيط (2 + 2). بعد ذلك، يتم تقييم السمة $_ التي تحتوي على القيمة نفسها:

‫$_ هي العبارة التي تم تقييمها مؤخرًا.

في المثال التالي، يحتوي التعبير الذي تم تقييمه في البداية على مصفوفة من الأسماء. عند تقييم $_.length للعثور على طول المصفوفة، تتغيّر القيمة المخزّنة في $_ لتصبح آخر تعبير تم تقييمه، وهو 4:

يتغيّر $_ عند تقييم أوامر جديدة.

$0 - $4

تعمل الأوامر $0 و$1 و$2 و$3 و$4 كمرجع تاريخي لآخر خمسة عناصر DOM (بما في ذلك العناصر الزائفة مثل ::before أو ::after) تم فحصها في لوحة العناصر أو آخر خمسة كائنات مكدس JavaScript تم اختيارها في لوحة "الملفات الشخصية". $0 تعرض العنصر أو كائن JavaScript الذي تم اختياره مؤخرًا، و$1 تعرض العنصر أو الكائن الذي تم اختياره قبل الأخير، وهكذا.

في المثال التالي، يتم اختيار عنصر img في لوحة العناصر. في درج وحدة التحكّم، تم تقييم $0 وعرض العنصر نفسه:

مثال على 0 دولار أمريكي

تعرض الصورة أدناه عنصرًا مختلفًا تم اختياره في الصفحة نفسها. يشير $0 الآن إلى العنصر الذي تم اختار حديثًا، بينما تعرض $1 العنصر الذي تم اختياره سابقًا:

مثال على دولار واحد

‎$(selector [, startNode])‎

$(selector) تعرض مرجعًا لأول عنصر DOM يتضمّن أداة اختيار لغة CSS المحدّدة. عند استدعاء هذه الدالة باستخدام وسيطة واحدة، تكون اختصارًا للدالة document.querySelector()‎.

يعرض المثال التالي مرجعًا لأول عنصر <img> في المستند:

مثال على $('img')

انقر بزر الماوس الأيمن على النتيجة المعروضة واختَر الكشف في لوحة "العناصر" للعثور عليها في DOM، أو التمرير للعرض لإظهارها على الصفحة.

يعرض المثال التالي مرجعًا للعنصر المحدّد حاليًا ويعرض سمة src الخاصة به:

مثال على $('img').src.

تتيح هذه الدالة أيضًا استخدام مَعلمة ثانية، وهي startNode، التي تحدّد "عنصرًا" أو عقدة للبحث عن العناصر منها. القيمة التلقائية لهذه المَعلمة هي 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)‎

عند استدعاء الدالة المحدّدة، يتم استدعاء أداة تصحيح الأخطاء وتتوقف داخل الدالة في لوحة المصادر ، ما يتيح لك تتبُّع التعليمات البرمجية وتصحيح أخطائها.

debug(getData);

إيقاف التنفيذ مؤقتًا داخل دالة باستخدام debug()

استخدِم undebug(fn) لإيقاف التوقف عند الدالة، أو استخدِم واجهة المستخدم لإيقاف جميع نقاط التوقف.

لمزيد من المعلومات عن نقاط التوقف، يُرجى الاطّلاع على مقالة إيقاف التعليمات البرمجية مؤقتًا باستخدام نقاط التوقف.

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 للكائن المحدّد، كما يظهر في لوحة العناصر. هذه الطريقة تعادل طريقة console.dirxml().

inspect(object/function)‎

تفتح inspect(object/function) العنصر أو الكائن المحدّد وتختاره في اللوحة المناسبة: إما لوحة العناصر لعناصر DOM أو لوحة "الملفات الشخصية" لكائنات مكدس JavaScript.

يفتح المثال التالي document.body في لوحة العناصر:

inspect(document.body);

فحص عنصر باستخدام inspect()

عند تمرير دالة إلى inspect، تفتح الدالة المستند لتتمكّن من فحصه في لوحة المصادر.

getEventListeners(object)

تعرض getEventListeners(object) متتبّعات الأحداث المسجّلة في الكائن المحدّد. القيمة المعروضة هي كائن يحتوي على مصفوفة لكل نوع من أنواع الأحداث المسجّلة (click أو keydown مثلاً). أعضاء كل مصفوفة هم كائنات تصف المتتبّع المسجّل لكل نوع. على سبيل المثال، يعرض الأمر التالي جميع متتبّعات الأحداث المسجّلة في كائن المستند:

getEventListeners(document);

ناتج استخدام getEventListeners()

إذا تم تسجيل أكثر من متتبّع واحد في الكائن المحدّد، ستحتوي المصفوفة على عضو لكل متتبّع. في المثال التالي، تم تسجيل متتبّعَين للأحداث في عنصر المستند للحدث 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");

مراقبة أحداث تغيير حجم النافذة

يحدّد الأمر التالي مصفوفة لمراقبة كل من حدثَي "تغيير الحجم" و"التمرير" في كائن النافذة:

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" لجميع أحداث المفاتيح المقابلة في حقل إدخال نصي محدّد حاليًا في لوحة العناصر.

monitorEvents($0, "key");

في ما يلي نموذج للإخراج بعد كتابة أحرف في حقل النص:

تتبُّع الأحداث الرئيسية

استخدِم unmonitorEvents(object[, events]) لإيقاف المراقبة.

profile([name])‎ وprofileEnd([name])‎

تبدأ profile() جلسة تتبُّع لوحدة المعالجة المركزية في JavaScript باستخدام اسم اختياري. تُكمل profileEnd() الملف الشخصي وتفتح لوحة الأداء تلقائيًا وتعرض النتائج في المسار الرئيسي.

لبدء تتبُّع الأداء:

profile("Profile 1")

لإيقاف تتبُّع الأداء والاطّلاع على النتائج في الأداء > المسار الرئيسي:

profileEnd("Profile 1")

النتيجة في الأداء > المسار الرئيسي:

الملف الشخصي 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);

مثال على طريقة 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]) عن مراقبة الأحداث للكائن والأحداث المحدّدة. على سبيل المثال، يوقف الأمر التالي جميع عمليات مراقبة الأحداث في كائن النافذة:

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);

نتيجة القيم(اللاعب)