webNavigation.onReferenceFragmentUpdated

当页面的片段标识符发生更改时会触发此事件。例如,如果页面使用片段实现目录,则当用户点击目录中的条目时会触发此事件。此框架的所有后续事件都将使用更新后的 URL。

语法

js
browser.webNavigation.onReferenceFragmentUpdated.addListener(
  listener,                   // 函数
  filter                      // 可选对象
)
browser.webNavigation.onReferenceFragmentUpdated.removeListener(listener)
browser.webNavigation.onReferenceFragmentUpdated.hasListener(listener)

事件包含三个函数:

addListener(listener)

为此事件添加监听器。

removeListener(listener)

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

hasListener(listener)

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

addListener 语法

参数

listener

事件触发时调用的函数。该函数接收以下参数:

details

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

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。页面的片段标识符更改的时间,以自纪元以来的毫秒数表示。

transitionType

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

transitionQualifiers

transitionQualifier 的数组(Array)。有关导航的额外信息,例如是否存在服务器或客户端重定向。

浏览器兼容性

示例

当目标 URL 的主机名包含“example.com”或以“developer”开头时,记录 onReferenceFragmentUpdated 的目标 URL 和额外的过渡信息。

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

function logOnReferenceFragmentUpdated(details) {
  console.log(`onReferenceFragmentUpdated:${details.url}`);
  console.log(`导航类型:${details.transitionType}`);
  console.log(`导航额外信息:${details.transitionQualifiers}`);
}

browser.webNavigation.onReferenceFragmentUpdated.addListener(
  logOnReferenceFragmentUpdated,
  filter,
);

备注: 此 API 基于 Chromium 的 chrome.webNavigation API。该文档衍生自 Chromium 代码中的 web_navigation.json