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。