webNavigation.onDOMContentLoaded

在页面中触发 DOMContentLoaded 事件时触发。此时文档已加载并解析,DOM 已完全构建,但图像、样式表和子帧等链接资源可能尚未加载。

语法

js
browser.webNavigation.onDOMContentLoaded.addListener(
  listener,                   // function
  filter                      // optional object
)
browser.webNavigation.onDOMContentLoaded.removeListener(listener)
browser.webNavigation.onDOMContentLoaded.hasListener(listener)

事件有三个函数

addListener(listener)

向此事件添加监听器。

removeListener(listener)

停止监听此事件。listener 参数是要移除的监听器。

hasListener(listener)

检查 listener 是否已为此事件注册。如果正在监听,则返回 true,否则返回 false

addListener 语法

参数

监听器

当此事件发生时调用的函数。该函数将传递此参数

details

object。有关导航事件的详细信息。有关更多信息,请参阅详细信息部分。

filter 可选

object。一个仅包含一个属性 url 的对象,该属性是 Array,其中包含 events.UrlFilter 对象。如果包含此参数,则该事件仅针对匹配数组中至少一个 UrlFilter 的 URL 的转换触发。如果省略此参数,则该事件针对所有转换触发。

额外对象

details

tabId

integer。发生导航的标签页的 ID。

url

string。给定帧已导航到的 URL。

processId 可选 已弃用

integer。此值在现代浏览器中未设置。当设置时,它代表运行此选项卡渲染器的进程ID。

frameId

integer。发生导航的帧。0 表示导航发生在标签页的顶级浏览上下文中,而不是嵌套的 <iframe> 中。正值表示导航发生在嵌套的 iframe 中。帧 ID 在给定标签页和进程中是唯一的。

parentFrameId

integer。此框架父级的ID。如果这是顶层框架,则设置为-1

timeStamp

numberDOMContentLoaded 触发的时间,以 自纪元以来的毫秒数 为单位。

示例

记录 onDOMContentLoaded 的目标 URL,前提是目标 URL 的主机名包含 "example.com" 或以 "developer" 开头。

js
const filter = {
  url: [{ hostContains: "example.com" }, { hostPrefix: "developer" }],
};

function logOnDOMContentLoaded(details) {
  console.log(`onDOMContentLoaded: ${details.url}`);
}

browser.webNavigation.onDOMContentLoaded.addListener(
  logOnDOMContentLoaded,
  filter,
);

浏览器兼容性

注意:此API基于Chromium的chrome.webNavigation API。本文档源自Chromium代码中的web_navigation.json