downloads.onChanged

downloads API 的 onChanged() 事件会在 downloads.DownloadItem 的任一属性发生更改时触发(bytesReceived 除外)。

监听器会收到一个 downloadDelta 作为参数 — 这是一个对象,包含相关 downloads.DownloadItem 对象的 downloadId,以及所有已更改属性的状态。

语法

js
browser.downloads.onChanged.addListener(listener)
browser.downloads.onChanged.removeListener(listener)
browser.downloads.onChanged.hasListener(listener)

事件有三个函数

addListener(listener)

向此事件添加监听器。

removeListener(listener)

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

hasListener(listener)

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

addListener 语法

参数

监听器

发生此事件时调用的函数。此函数将接收以下参数:

downloadDelta

一个 object,表示已更改的 downloads.DownloadItem 对象,以及其中已更改的所有属性的状态。有关更多详细信息,请参阅 downloadDelta 部分。

额外对象

downloadDelta

downloadDelta 对象具有以下可用属性:

id

一个 integer,表示已更改的 downloads.DownloadItemid

url 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemurl 的更改。

filename 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemfilename 的更改。

danger 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemdanger 的更改。

mime 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemmime 的更改。

startTime 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemstartTime 的更改。

endTime 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemendTime 的更改。

state 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemstate 的更改。

canResume 可选

一个 downloads.BooleanDelta 对象,描述了 downloads.DownloadItemcanResume 状态的更改。

paused 可选

一个 downloads.BooleanDelta 对象,描述了 downloads.DownloadItempaused 状态的更改。

error 可选

一个 downloads.StringDelta 对象,描述了 downloads.DownloadItemerror 状态的更改。

totalBytes 可选

一个 downloads.DoubleDelta 对象,描述了 downloads.DownloadItemtotalBytes 的更改。

fileSize 可选

一个 downloads.DoubleDelta 对象,描述了 downloads.DownloadItemfileSize 的更改。

exists 可选

一个 downloads.BooleanDelta 对象,描述了 downloads.DownloadItemexists 状态的更改。

示例

下载完成时记录一条消息

js
function handleChanged(delta) {
  if (delta.state && delta.state.current === "complete") {
    console.log(`Download ${delta.id} has completed.`);
  }
}

browser.downloads.onChanged.addListener(handleChanged);

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.downloads API。