webNavigation.onHistoryStateUpdated
当页面使用 history API 更新浏览器地址栏中显示的 URL 时触发此事件。此框架的所有后续事件将使用更新后的 URL。
语法
browser.webNavigation.onHistoryStateUpdated.addListener(
listener, // 函数
filter // 可选对象
)
browser.webNavigation.onHistoryStateUpdated.removeListener(listener)
browser.webNavigation.onHistoryStateUpdated.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 对于给定的标签页和进程是唯一的。 timeStamp
-
number
。History API 更改 URL 的时间,以自纪元以来的毫秒数表示。 transitionType
-
transitionType
。导航的原因,例如,如果用户点击了链接,则为“link”。 transitionQualifiers
-
transitionQualifier
的数组(Array
)。有关导航的额外信息,例如是否存在服务器或客户端重定向。
浏览器兼容性
示例
当目标 URL 的主机名包含“example.com”或以“developer”开头时,记录 onHistoryStateUpdated
的目标 URL 和额外的过渡信息。
const filter = {
url: [{ hostContains: "example.com" }, { hostPrefix: "developer" }],
};
function logOnHistoryStateUpdated(details) {
console.log(`onHistoryStateUpdated:${details.url}`);
console.log(`导航类型:${details.transitionType}`);
console.log(`导航额外信息:${details.transitionQualifiers}`);
}
browser.webNavigation.onHistoryStateUpdated.addListener(
logOnHistoryStateUpdated,
filter,
);
备注:
此 API 基于 Chromium 的 chrome.webNavigation
API。该文档衍生自 Chromium 代码中的 web_navigation.json
。