webNavigation.onCommitted
当导航被提交时触发。在此时,浏览器至少已经接收了部分的新文档,且已决定切换到新文档。
语法
browser.webNavigation.onCommitted.addListener(
  listener,                 // 函数
  filter                    // 可选对象
)
browser.webNavigation.onCommitted.removeListener(listener)
browser.webNavigation.onCommitted.hasListener(listener)
事件有三个函数:
- addListener(listener)
- 
为此事件添加监听器。 
- removeListener(listener)
- 
停止监听此事件。 listener参数是要移除的监听器。
- hasListener(listener)
- 
检查是否已为此事件注册了 listener。若正在监听,返回true,否则返回false。
addListener 语法
>参数
- listener
- 
事件触发时调用的函数。该函数接收以下参数: 
- filter可选
- 
object。包含单个url属性的对象,且这一属性是events.UrlFilter对象的数组(Array)。如果包含此参数,则仅当目标 URL 匹配数组中至少一个UrlFilter时,事件才会触发。如果省略此参数,则事件会为所有导航触发。
附加对象
>details
- tabId
- 
integer。即将发生导航的标签页的 ID。
- url
- 
string。指定框架将要导航到的 URL。
- processId可选 已弃用
- 
integer。在现代浏览器中未设置该值。当设置时,它表示运行此标签页渲染器的进程 ID。
- frameId
- 
integer。即将发生导航的框架。0表示导航发生在标签页的顶级浏览上下文中,而不是嵌套的<iframe>中。正值表示导航发生在嵌套的 iframe 中。框架 ID 对于给定的标签页和进程是唯一的。
- parentFrameId
- 
integer。此框架的父框架的 ID。如果是顶级框架,则设置为-1。
- timeStamp
- 
number。导航被提交的时间,以自纪元以来的毫秒数表示。
- transitionType
- 
transitionType。导航的原因。(例如,如果用户点击了链接,则为“link”;如果用户重新加载了页面,则为“reload”。)
- transitionQualifiers
- 
transitionQualifier的数组(Array)。有关导航的额外信息,例如是否存在服务器或客户端重定向。
浏览器兼容性
Loading…
示例
如果目标的主机名包含“example.com”或以“developer”开头时,记录 onCommitted 的目标 URL 和额外的切换信息。
const filter = {
  url: [{ hostContains: "example.com" }, { hostPrefix: "developer" }],
};
function logOnCommitted(details) {
  console.log(`目标 URL:${details.url}`);
  console.log(`转换类型:${details.transitionType}`);
  console.log(`转换限定符:${details.transitionQualifiers}`);
}
browser.webNavigation.onCommitted.addListener(logOnCommitted, filter);
示例扩展
备注:此 API 基于 Chromium 的 chrome.webNavigation API。该文档衍生自 Chromium 代码中的 web_navigation.json。