webNavigation.onBeforeNavigate

当浏览器即将启动导航事件时触发。

语法

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

事件具有三个函数

addListener(listener)

向此事件添加监听器。

removeListener(listener)

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

hasListener(listener)

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

addListener 语法

参数

listener

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

details

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

filter 可选

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

其他对象

details

tabId

integer。即将发生导航的标签的 ID。

url

string。给定框架将导航到的 URL。

processId 可选 已弃用

integer。此值在现代浏览器中未设置。当它被设置时,它表示为该标签运行渲染器的进程的 ID。

frameId

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

parentFrameId

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

timeStamp

number。浏览器即将启动导航的时间,以 自纪元以来的毫秒数 为单位。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

如果目标的主机名包含 "example.com" 或以 "developer" 开头,则记录 onBeforeNavigate 的目标 URL。

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

function logOnBefore(details) {
  console.log(`onBeforeNavigate to: ${details.url}`);
}

browser.webNavigation.onBeforeNavigate.addListener(logOnBefore, filter);

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