性能:mark() 方法
mark()
方法在浏览器的性能时间线上创建一个名为 PerformanceMark
的对象,该对象表示一个高分辨率的时间戳标记。
语法
js
mark(name)
mark(name, markOptions)
参数
name
-
表示标记名称的字符串。不得与已弃用
PerformanceTiming
接口的属性之一具有相同的名称。 markOptions
可选-
用于指定时间戳和标记的其他元数据的对象。
detail
可选-
要包含在标记中的任意元数据。默认为
null
。必须是 结构化克隆。 startTime
可选-
用作标记时间的
DOMHighResTimeStamp
。默认为performance.now()
。
返回值
已创建的 PerformanceMark
条目。
异常
SyntaxError
:如果name
是已弃用PerformanceTiming
接口的属性之一,则抛出此异常。请参阅 下面的示例。TypeError
:如果startTime
为负数,则抛出此异常。
示例
创建命名标记
以下示例使用 mark()
创建命名 PerformanceMark
条目。您可以使用相同的名称创建多个标记。您还可以分配它们,以便引用已创建的 PerformanceMark
对象。
js
performance.mark("login-started");
performance.mark("login-started");
performance.mark("login-finished");
performance.mark("form-sent");
const videoMarker = performance.mark("video-loaded");
创建包含详细信息的标记
可以使用 markOptions
对象配置性能标记,您可以在 detail
属性中放置其他信息,该属性可以是任何类型。
js
performance.mark("login-started", {
detail: "Login started using the login button in the top menu.",
});
performance.mark("login-started", {
detail: { htmlElement: myElement.id },
});
使用不同的开始时间创建标记
mark()
方法的默认时间戳是 performance.now()
。您可以使用 markOptions
中的 startTime
选项将其设置为不同的时间。
js
performance.mark("start-checkout", {
startTime: 20.0,
});
performance.mark("login-button-pressed", {
startTime: myEvent.timeStamp,
});
保留名称
请注意,为了保持向后兼容性,不能使用已弃用 PerformanceTiming
接口中包含的名称。以下示例将抛出
js
performance.mark("navigationStart");
// SyntaxError: "navigationStart" is part of
// the PerformanceTiming interface,
// and cannot be used as a mark name
规范
规范 |
---|
用户计时 # dom-performance-mark |
浏览器兼容性
BCD 表格仅在浏览器中加载