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() 调用都接受一个可选的 filter 参数。filter 将指定一个或多个 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

当页面使用 History API 更新浏览器地址栏中显示的 URL 时触发。

扩展程序示例

浏览器兼容性

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