webNavigation
添加各种导航阶段的事件侦听器。导航包括浏览器中的一个框架从一个 URL 转换到另一个 URL,通常(但并非总是)响应用户操作,例如单击链接或在位置栏中输入 URL。
与 webRequest
API 相比:导航通常会导致浏览器发出 Web 请求,但 webRequest API 关注的是 HTTP 层的低级视图,而 webNavigation API 更关注的是浏览器 UI 本身中的视图。
每个事件对应于导航中的特定阶段。事件顺序如下所示
- 主要流程是
- 此外
- 如果浏览器需要为导航创建一个新标签页或窗口(例如,因为用户在新标签页中打开了链接),则在
onBeforeNavigate
之前触发
。onCreatedNavigationTarget
- 如果页面使用 历史记录 API (2011) 更新浏览器位置栏中显示的 URL,则触发
onHistoryStateUpdated
。 - 如果更改页面的 片段标识符,则触发
onReferenceFragmentUpdated
。 onErrorOccurred
可以在任何时候触发。
- 如果浏览器需要为导航创建一个新标签页或窗口(例如,因为用户在新标签页中打开了链接),则在
每次导航都是特定浏览器框架中的 URL 转换。浏览器框架由标签 ID 和框架 ID 标识。该框架可以是标签页中的顶级浏览上下文,也可以是作为 iframe 实现的嵌套浏览上下文。
每个事件的 addListener()
调用都接受一个可选的过滤器参数。过滤器将指定一个或多个 URL 模式,然后事件将仅针对目标 URL 与其中一个模式匹配的导航触发。
onCommitted
事件侦听器传递了两个额外的属性:一个 TransitionType
,指示导航的原因(例如,因为用户单击了链接,或者用户选择了书签),以及一个 TransitionQualifier
,提供有关导航的更多信息。
要使用此 API,您需要拥有“webNavigation” 权限。
类型
-
导航的原因:例如,用户单击链接、键入地址或单击书签。
-
有关转换的额外信息。
函数
-
检索有关特定框架的信息。框架可以是标签页中的顶级框架或嵌套的 iframe,并且由标签 ID 和框架 ID 唯一标识。
-
给定标签 ID,检索其包含的所有框架的信息。
事件
-
当浏览器即将开始导航事件时触发。
-
当导航提交时触发。服务器已收到新文档的至少一部分,并且浏览器已决定切换到新文档。
-
当页面中触发 DOMContentLoaded 事件时触发。
-
当文档(包括其引用的资源)完全加载并初始化时触发。这等效于 DOM
load
事件。 -
当发生错误并中止导航时触发。如果发生网络错误或用户中止导航,都可能发生这种情况。
-
当创建新的窗口或现有窗口中的新标签页来承载导航时触发:例如,如果用户在新标签页中打开链接。
-
如果更改页面的 片段标识符,则触发。
-
当标签页的内容被不同的(通常是先前预渲染的)标签页替换时触发。
-
当页面使用 历史记录 API (2011) 更新浏览器位置栏中显示的 URL 时触发。
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
示例扩展
注意:此 API 基于 Chromium 的 chrome.webNavigation
API。本文档源自 Chromium 代码中的 web_navigation.json
。