webNavigation.onErrorOccurred

当发生错误且导航被中止时触发。这可能是由于发生了网络错误,或者用户中止了导航。

语法

js
browser.webNavigation.onErrorOccurred.addListener(
  listener,                   // function
  filter                      // optional object
)
browser.webNavigation.onErrorOccurred.removeListener(listener)
browser.webNavigation.onErrorOccurred.hasListener(listener)

事件有三个函数

addListener(listener), addListener(listener, filter)

向此事件添加监听器。

removeListener(listener)

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

hasListener(listener)

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

addListener 语法

参数

监听器

当此事件发生时调用的函数。

listener 函数将使用以下参数进行调用

details

object。有关导航事件的详细信息。details 具有以下属性

tabId

integer。发生导航的标签页 ID。

url

string。给定框架正在导航到的 URL。

processId 可选 已弃用

integer。在现代浏览器中,此值永远不会设置。它过去用于表示此标签页的渲染器进程的 ID。

frameId

integer。发生导航的框架。

0 表示导航发生在标签页的顶级浏览上下文中,而不是嵌套的 <iframe> 中。

正值表示导航发生在嵌套的 iframe 中。

对于给定的标签页和进程,框架 ID 是唯一的。

parentFrameId

integer。此框架父级的ID。如果这是顶层框架,则设置为-1

timeStamp

number。发生错误的时间,以自纪元以来的 毫秒为单位。

error

string。错误代码。这是一个内部错误代码,不保证在不同浏览器中保持不变或一致。

filter 可选

object。一个对象,包含单个属性 url,它是一个 events.UrlFilter 对象的 Array

如果包含此参数,则仅当导航到的 URL 至少匹配数组中的一个 UrlFilter 时,事件才会触发。

如果省略此参数,则事件会触发所有导航。

示例

如果目标 URL 的 hostname 包含 "example.com" 或以 "developer" 开头,则记录 onErrorOccurred 的目标 URL。

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

function logOnErrorOccurred(details) {
  console.log(`onErrorOccurred: ${details.url}`);
  console.log(details.error);
}

browser.webNavigation.onErrorOccurred.addListener(logOnErrorOccurred, filter);

浏览器兼容性

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