webNavigation.onHistoryStateUpdated

当页面使用 History 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 语法

参数

监听器

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

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

number。History API 更改 URL 的时间,以毫秒(自纪元起)为单位。

transitionType

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

transitionQualifiers

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

示例

如果目标 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