此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

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