webNavigation.onHistoryStateUpdated

当页面使用>历史 API更新浏览器地址栏中显示的 URL 时触发。此框架的所有未来事件都将使用更新后的 URL。

语法

js
browser.webNavigation.onHistoryStateUpdated.addListener(
  listener,                   // function
  filter                      // optional object
)
browser.webNavigation.onHistoryStateUpdated.removeListener(listener)
browser.webNavigation.onHistoryStateUpdated.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 对给定的选项卡和进程是唯一的。

timeStamp

number。通过历史 API 更改 URL 的时间,以自纪元以来的毫秒数表示。

transitionType

transitionType。导航的原因:例如,如果用户单击链接,则为"link"

transitionQualifiers

Array of transitionQualifier。有关导航的其他信息:例如,是否存在服务器或客户端重定向。

浏览器兼容性

BCD 表仅在浏览器中加载

示例

如果目标 URL 的主机名包含“example.com”或以“developer”开头,则记录onHistoryStateUpdated的目标 URL 和额外的转换信息。

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

function logOnHistoryStateUpdated(details) {
  console.log(`onHistoryStateUpdated: ${details.url}`);
  console.log(`Transition type: ${details.transitionType}`);
  console.log(`Transition qualifiers: ${details.transitionQualifiers}`);
}

browser.webNavigation.onHistoryStateUpdated.addListener(
  logOnHistoryStateUpdated,
  filter,
);

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