网页检查器参考控制台命令行 API
网页检查器最实用的功能之一是能够在控制台中生成任何值的交互式可视化内容。
但是控制台的功能远不止可视化值那么简单。
当从控制台评估 JavaScript 时,有一些特殊公开的获取器和函数可用,它们提供了通过其他任何方式都无法实现的功能。
这些获取器和函数可以同步引用,如同它们是当前作用域中定义的变量一样。
获取器
$_
等于上次控制台评估的结果。$0
等于**元素**选项卡中DOM 树中当前选定的 DOM 节点。$1
到$99
都与$_
类似,它们分别等于最近 99 次**控制台**评估中的一个。- 每次后续评估都将从“下一个”索引访问。
- 当**控制台**评估超过 99 次时,计数会通过替换
$1
而“重新开始”。 - 清除**控制台**会重置所有保存的值。
- 右键单击任何对象预览并在上下文菜单中选择“记录值”将自动记录并保存该值到**控制台**。
- 网页检查器中还存在此功能的其他版本,例如在**元素**选项卡中的DOM 树中,所有 DOM 节点都有“记录元素”选项。
$exception
等于 JavaScript 执行在被抛出后暂停时的当前异常。$event
等于 JavaScript 执行在 DOM 事件监听器内部暂停时的当前 DOM 事件。
函数
$(selector[, context])
是(context || document).querySelector(selector)
的快捷方式。$$(selector[, context])
是(context || document).querySelectorAll(selector)
的快捷方式。$x(xpath[, context])
是document.evaluate(xpath, (context || document), null, XPathResult.ANY_TYPE, null)
的快捷方式。
class Animal {
constructor(species) {
this.species = species;
}
};
class Pet extends Animal {
constructor(name, species) {
super(species);
this.name = name;
}
};
let cat = new Animal("Cat");
let spot = new Pet("Spot", "Dog");
queryInstances(Animal) // [ spot, cat, Pet ]
queryInstances(Pet) // [ spot ]
queryInstances(Animal.prototype) // [ spot, cat, Pet ]
queryInstances(Pet.prototype) // [ spot ]
class Person {
constructor(name) {
this.name = name;
}
};
let john = new Person("John");
let alice = new Person("Alice");
alice.parent = john;
queryHolders(john) // [ alice ]
queryHolders
只考虑强引用给定object
的对象,因此WeakMap
/WeakSet
不被考虑在内。
{
<eventName>: [
{
Function listener,
boolean once,
boolean passive,
boolean useCapture,
},
...
],
...
}
monitorEvents(eventTarget[, types])
添加一个 DOM 事件监听器,它会为给定types
(如果提供)调用console.log
。- 如果未提供
types
,则会使用一组预设的 DOM 事件代替(abort
、blur
、change
、control
、devicemotion
、deviceorientation
、error
、focus
、key
、load
、mouse
、reset
、resize
、scroll
、search
、select
、submit
、touch
和unload
)。 - 还有一些特殊字符串可用作
types
中的任何值,它们代表一组 DOM 事件:
鼠标事件
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
copy(value)
会将给定value
的文本表示形式(例如value.toString()
、JSON.stringify(value)
等)复制到系统剪贴板。- 如果
value
是一个 DOM 节点,它将复制value.outerHTML
。
每个 console
方法都有一个快捷方式(例如 console.log([...data])
可以调用为 log([...data])
)。
保存结果别名
上面描述的获取器被视为一种“最后手段”引用,这意味着如果被检查的目标定义了自己的 globalThis.$0
或 globalThis.$1
,则将使用它们而不是获取器。
网页检查器在**设置**选项卡的**控制台**面板中提供了一个输入框,用于这些情况,允许您为每个获取器设置一个别名。
输入框的值会替换每个获取器名称中的“$”符号。例如,别名为“tmp”会导致 $_
、$0
和 $exception
也可以通过 tmp_
、tmp0
和 tmpexception
引用。
请记住,这只影响获取器,因此函数(如 $x
)不会被别名化。