file_handlers

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

file_handlers 成員指定一個物件陣列,代表已安裝的漸進式 Web 應用 (PWA) 可以處理的檔案型別。

瀏覽器在安裝 PWA 時會讀取 file_handlers 成員,並用它在作業系統層面將應用程式與一組指定的檔案型別關聯起來。

例如,PWA 可以註冊以處理匹配 text/plain MIME 型別的檔案。一旦安裝了此 PWA,作業系統就可以使用它來處理文字檔案,當用戶開啟此類檔案時,將啟動 PWA。請注意,其他應用程式也可能註冊為文字檔案處理程式,並且作業系統管理檔案型別與應用程式之間關聯的方式,以及它們允許使用者選擇處理給定檔案的應用程式的方式,可能因裝置而異。

注意:雖然 file_handlers 成員用於將 PWA 與一組指定的檔案型別註冊,但這隻會導致作業系統在開啟匹配檔案時啟動 PWA。然後,PWA 需要使用 JavaScript 程式碼實際處理該檔案。有關更多資訊,請參閱處理檔案

一個物件陣列。陣列中的每個物件都必須包含以下值(actionaccept 是必需的)

action

當處理檔案時,導航到的 URL 的字串。此 URL 必須在 PWA 的導航範圍內,即 PWA 可以導航到的 URL 集合。PWA 的導航範圍預設為其 start_url 成員,但也可以透過使用 scope 成員來定義。

accept

一個物件。對於物件中的每個屬性

  • 屬性鍵是 MIME 型別。
  • 屬性值是一個字串陣列,代表與該 MIME 型別關聯的副檔名。

示例

在此示例中,Web 應用清單聲明瞭一個檔案處理程式,該處理程式將應用程式註冊為處理音訊檔案。出於簡潔性考慮,此示例未包含 nameicons 等其他清單成員。

json
{
  "file_handlers": [
    {
      "action": "/handle-audio-file",
      "accept": {
        "audio/wav": [".wav"],
        "audio/x-wav": [".wav"],
        "audio/mpeg": [".mp3"],
        "audio/mp4": [".mp4"],
        "audio/aac": [".adts"],
        "audio/ogg": [".ogg"],
        "application/ogg": [".ogg"],
        "audio/webm": [".webm"],
        "audio/flac": [".flac"],
        "audio/mid": [".rmi", ".mid"]
      }
    }
  ]
}

處理檔案

為了在 PWA 中實際實現檔案處理,Web 開發人員還需要使用 window.launchQueue 在其應用程式 JavaScript 程式碼中處理傳入的檔案。

檔案處理是在應用程式程式碼的主執行緒上進行的,而不是在應用程式的服務工作執行緒中進行的。

在以下示例中,window.launchQueue.setConsumer() 用於指定一個回撥函式,該函式接收傳入的音訊檔案,並使用 Audio 元素播放第一個檔案。

js
async function playSong(handledFile) {
  const blob = await handledFile.getFile();
  const url = window.URL.createObjectURL(blob);
  const audio = new Audio(url);
  audio.play();
}

if ("launchQueue" in window) {
  window.launchQueue.setConsumer((launchParams) => {
    if (launchParams.files && launchParams.files.length) {
      playSong(launchParams.files[0]);
    }
  });
}

規範

規範
清單孵化
# file_handlers 成員

瀏覽器相容性

另見