webNavigation

添加各种导航阶段的事件侦听器。导航包括浏览器中的一个框架从一个 URL 转换到另一个 URL,通常(但并非总是)响应用户操作,例如单击链接或在位置栏中输入 URL。

webRequest API 相比:导航通常会导致浏览器发出 Web 请求,但 webRequest API 关注的是 HTTP 层的低级视图,而 webNavigation API 更关注的是浏览器 UI 本身中的视图。

每个事件对应于导航中的特定阶段。事件顺序如下所示

Visualization of the primary flow and additional flows described below.

每次导航都是特定浏览器框架中的 URL 转换。浏览器框架由标签 ID 和框架 ID 标识。该框架可以是标签页中的顶级浏览上下文,也可以是作为 iframe 实现的嵌套浏览上下文。

每个事件的 addListener() 调用都接受一个可选的过滤器参数。过滤器将指定一个或多个 URL 模式,然后事件将仅针对目标 URL 与其中一个模式匹配的导航触发。

onCommitted 事件侦听器传递了两个额外的属性:一个 TransitionType,指示导航的原因(例如,因为用户单击了链接,或者用户选择了书签),以及一个 TransitionQualifier,提供有关导航的更多信息。

要使用此 API,您需要拥有“webNavigation” 权限

类型

webNavigation.TransitionType

导航的原因:例如,用户单击链接、键入地址或单击书签。

webNavigation.TransitionQualifier

有关转换的额外信息。

函数

webNavigation.getFrame()

检索有关特定框架的信息。框架可以是标签页中的顶级框架或嵌套的 iframe,并且由标签 ID 和框架 ID 唯一标识。

webNavigation.getAllFrames()

给定标签 ID,检索其包含的所有框架的信息。

事件

webNavigation.onBeforeNavigate

当浏览器即将开始导航事件时触发。

webNavigation.onCommitted

当导航提交时触发。服务器已收到新文档的至少一部分,并且浏览器已决定切换到新文档。

webNavigation.onDOMContentLoaded

当页面中触发 DOMContentLoaded 事件时触发。

webNavigation.onCompleted

当文档(包括其引用的资源)完全加载并初始化时触发。这等效于 DOM load 事件。

webNavigation.onErrorOccurred

当发生错误并中止导航时触发。如果发生网络错误或用户中止导航,都可能发生这种情况。

webNavigation.onCreatedNavigationTarget

当创建新的窗口或现有窗口中的新标签页来承载导航时触发:例如,如果用户在新标签页中打开链接。

webNavigation.onReferenceFragmentUpdated

如果更改页面的 片段标识符,则触发。

webNavigation.onTabReplaced

当标签页的内容被不同的(通常是先前预渲染的)标签页替换时触发。

webNavigation.onHistoryStateUpdated

当页面使用 历史记录 API (2011) 更新浏览器位置栏中显示的 URL 时触发。

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

示例扩展

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