性能:mark() 方法

mark() 方法在浏览器的性能时间线上创建一个名为 PerformanceMark 的对象,该对象表示一个高分辨率的时间戳标记。

语法

js
mark(name)
mark(name, markOptions)

参数

name

表示标记名称的字符串。不得与已弃用 PerformanceTiming 接口的属性之一具有相同的名称。

markOptions 可选

用于指定时间戳和标记的其他元数据的对象。

detail 可选

要包含在标记中的任意元数据。默认为 null。必须是 结构化克隆

startTime 可选

用作标记时间的 DOMHighResTimeStamp。默认为 performance.now()

返回值

已创建的 PerformanceMark 条目。

异常

示例

创建命名标记

以下示例使用 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 表格仅在浏览器中加载