跳至主要內容

Chrome 控制台实用 API 参考

Kayce Basques2022年7月24日Debug调试chrome大约 15 分钟约 4483 字

Chrome 控制台实用 API 参考

原文链接:Console Utilities API referenceopen in new window

Console Utilities API 包含一组用于执行常见任务且方便的函数:选择和检查 DOM 元素、以可读格式显示数据、停止和启动分析器以及监视 DOM 事件。

警告

这些功能只有当你从 Chrome DevTools 控制台调用它们时才能工作。如果您试图在脚本中调用它们,它们将不起作用。

如果你想查看 console.log(), console.error() 以及剩下的 console.* 函数,请看 Console API Referenceopen in new window.

$_

$_ 返回最近求值的表达式的值。

在下面的例子中,计算一个简单的表达式(2 + 2)。然后计算 $_ 属性,它包含相同的值:

$_ 是最近求值的表达式

在下一个示例中,求值表达式最初包含一个名称数组。

计算 $_.length 来查找数组的长度,存储在 $_ 中的值会变成最新的求值表达式,为 4:

$_ changes when new commands are evaluated

$0 - ​$4

$0, $1, $2, $3$4 作为元素面板中检查的最后 5 个 DOM 元素或概要面板中选择的最后 5 个 JavaScript 堆对象的历史引用。

$0 返回最近选择的元素或 JavaScript 对象, $1 返回最近选择的第二个,以此类推。

在下面的例子中,Elements 面板中选择了一个 img 元素。在 Console 抽屉中,$0 已被求值并展示相同的元素:

$0 的例子

下图显示了在同一页面中选择的不同元素。

$0 现在指向新选择的元素,而 $1 则返回先前选择的元素:

$1 的例子

$(selector [, startNode])

$(selector) 返回具有指定的 CSS 选择器的第一个 DOM 元素的引用。

当使用一个参数调用时,此函数是 document.querySelector()open in new window 函数的别名。

下面的例子返回了对文档中第一个 <img> 元素的引用:

$('img') 的例子

右键单击返回的结果,选择“Reveal in Elements Panel”,在 DOM 中找到它,或者选择“Scroll in to View”,在页面上显示它。

下面的例子返回当前选定元素的引用,并显示其 src 属性:

$('img').src 的例子

这个函数还支持第二个参数 startNode,它指定了一个“元素”或用于搜索元素的节点。该参数的默认值是 document

下面的示例返回当前选定节点后的第一个元素的引用,并正确地显示其 src 属性:

$('img', div).src 的例子

提示

如果你使用一个像 jQuery 一样使用 $ 的库,该功能将被覆盖,$ 将对应该库的实现。

$$(selector [, startNode])

$$(selector) 返回一个匹配给定 CSS 选择器的元素数组。这个命令等价于调用document.querySelectorAll()open in new window

下面的例子使用 $$() 来创建当前文档中所有 <img> 元素的数组,并显示每个元素的 src 属性的值:

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

使用 $$() 选择文档中的所有图像并显示的示例。

这个函数还支持第二个参数 startNode,它指定一个或多个元素,以便从中搜索元素。该参数的默认值是 document

这个修改后的版本使用了 $$() 来创建一个数组,包含所有 <img> 元素,这些元素出现在当前文档中选定的节点之后:

let images = $$("img", document.querySelector(".devsite-header-background"));
for (let each of images) {
    console.log(each.src);
}
使用 $() 选择 document 中已选 div 元素后出现的所有图像并显示其来源

提示

在控制台中按下 Shift + Enter 键即可换行,这不会执行脚本。

$x(path [, startNode])

$x(path) 返回一个与给定 XPath 表达式匹配的 DOM 元素数组。

例如,下面的代码返回页面上所有的 <p> 元素:

$x("//p");
Example of using an XPath selector

下面的例子返回所有包含 <a> 元素的 <p> 元素:

$x("//p[a]");
Example of using a more complicated XPath selector

与其他选择器函数类似,$x(path) 有一个可选的参数 startNode,它指定一个或多个元素,以便从中搜索元素。

Example of using an XPath selector with startNode

clear()

clear() 清除控制台的历史记录。

clear();

copy(object)

copy(object) 将指定对象的字符串形式复制到剪贴板。

copy($0);

debug(function)

当调用指定的函数时,将调用调试器,并在 Sources 面板上的函数内部中断,从而允许逐步遍历代码并调试它。

debug(getData);
Breaking inside a function with debug()

使用 undebug(fn) 停止函数断点,或使用 UI 禁用所有断点。

有关断点的更多信息,请参见 使用断点暂停代码open in new window

dir(object)

dir(object) 以对象的形式显示所有指定对象的属性。这个方法是 Console API 的 console.dir() 方法的别名。

下面的例子展示了在命令行中直接计算 document.body 和使用 dir() 来显示相同元素的区别:

document.body;
dir(document.body);
Logging document.body with and without dir() function

有关更多信息,请参阅控制台 API 中的 console.dir()open in new window 条目。

dirxml(object)

dirxml(object) 打印指定对象的 XML 表示,如在 Elements 选项卡中所示。 这个方法等价于 console.dirxml()open in new window 方法。

inspect(object/function)

inspect(object/function) 在合适的面板中打开并选择指定的元素或对象:用于 DOM 元素的 Elements 面板或用于 JavaScript 堆对象的 Profiles 面板。

下面的示例中,在元素面板中打开 document.body

inspect(document.body);
Inspecting an element with inspect()

当传递一个要检查的函数时,该函数会在 Sources 面板中打开文档以供检查。

getEventListeners(object)

getEventListeners(object) 返回在指定对象上注册的事件侦听器。

返回值是一个对象,包含每个已注册事件类型的数组(例如 clickkeydown)。 每个数组的成员都是描述为每种类型注册的侦听器的对象。 例如,下面列出了在 document 对象上注册的所有事件监听器:

getEventListeners(document);
Output of using getEventListeners()

如果在指定的对象上注册了多个侦听器,则数组为每个侦听器包含一个成员。 在下面的例子中,有两个事件监听器在 document 元素上注册了 click 事件:

Multiple listeners

你可以进一步展开这些对象来探索它们的属性:

Expanded view of listener object

keys(object)

keys(object) 返回一个包含属于指定对象的属性名称的数组。要获取相同属性的关联值,请使用 values()

例如,假设你定义了以下对象:

let player1 = { name: "Ted", level: 42 };

假设 player1 是在全局命名空间中定义的(为了简单起见),在控制台中输入 keys(player1)values(player1) 将得到以下结果:

Example of keys() and values() methods

monitor(function)

当调用指定的函数时,将记录一条消息到控制台,该消息指示函数名以及在调用函数时传递给该函数的参数。

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

使用 unmonitor(function) 停止监控。

monitorEvents(object [, events])

当指定对象上发生指定事件之一时,将 Event 对象记录到控制台。可以指定要监视的单个事件、事件数组或映射到预定义事件集合的泛型事件“类型”之一。请参见下面的例子。

下面的代码监视窗口对象上的所有调整大小事件。

monitorEvents(window, "resize");
Monitoring window resize events

下面定义了一个数组来监视 window 对象上的"resize"和"scroll"事件:

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

您还可以指定一个可用的事件“类型”,即映射到预定义事件集的字符串。下表列出了可用的事件类型及其关联的事件映射:

Event type & 对应的事件集
mouse "mousedown", "mouseup", "click", "dblclick", "mousemove", "mouseover", "mouseout", "mousewheel"
key"keydown", "keyup", "keypress", "textInput"
touch"touchstart", "touchmove", "touchend", "touchcancel"
control "resize", "scroll", "zoom", "focus", "blur", "select", "change", "submit", "reset"

例如,下面使用“key”事件类型在 Elements 面板中当前选择的输入文本字段中所有对应的键事件。

monitorEvents($0, "key");

下面是在文本框中输入一个字符后的输出示例:

Monitoring key events

profile([name]) 和 profileEnd([name])

profile() 用一个可选的名称启动一个 JavaScript CPU 分析会话。profileEnd() 完成配置文件,并在配置文件面板中显示结果。(参见 加速 JavaScript 执行open in new window。)

开始分析:

profile("My profile");

停止分析并在 Profiles 面板中显示结果:

profileEnd("My profile");

Profiles 也可以嵌套。例如,这将以任何顺序工作:

profile("A");
profile("B");
profileEnd("A");
profileEnd("B");

Profiles 面板中的结果:

Grouped profiles

提示

多个 CPU 配置文件可以同时操作,你不需要按创建顺序关闭它们。

queryObjects(Constructor)

The scope of queryObjects() is the currently-selected execution context in the console.

从控制台中调用 queryObjects(Constructor) 来返回使用指定构造函数创建的对象数组。例如:

table(data [, columns])

通过传入带有可选列标题的数据对象,以表格格式记录对象数据。 例如,要在控制台中使用表格显示名称列表,你可以这样做:

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

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) 返回一个数组,其中包含属于指定对象的所有属性的值。

values(object);
2023-9-14 更新
重启 search-pro,css 样式调整