ContentIndex:add() 方法

可用性有限

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

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

注意:此功能在 Web Workers 中可用。

ContentIndex 介面的 add() 方法會向 內容索引 註冊一個專案。

語法

js
add(contentDescription)

引數

contentDescription

一個包含以下資料的 Object

id

一個唯一的 String 識別符號。

title

一個用於該專案的 String 標題。用於使用者可見的內容列表中。

description

一個用於該專案的 String 描述。用於使用者可見的內容列表中。

url

一個包含相應 HTML 文件 URL 的 String。需要位於當前 Service Worker 的作用域內。

category 可選

一個定義內容類別的 String。可以是:

  • '' 一個空的 String,這是預設值。
  • homepage
  • article
  • video
  • audio
icons 可選

一個由影像資源組成的 Array,定義為一個包含以下資料的 Object

src

源影像的 URL String

sizes 可選

影像尺寸的 String 表示。

type 可選

影像的 MIME 型別

label 可選

一個代表圖示可訪問名稱的字串。

返回值

返回一個解析為 undefinedPromise

異常

TypeError

在以下情況下會丟擲此異常:

  • Service Worker 的註冊不存在,或者 Service Worker 不包含 FetchEvent
  • idtitledescriptionurl 引數缺失、型別不是 String,或者為空 String
  • url 引數與 Service Worker同源策略 不符。
  • icons 中的某個專案不是影像型別,或者獲取 icons 中的某個專案時因網路錯誤或解碼錯誤而失敗。

示例

這裡我們聲明瞭一個格式正確的專案,並建立了一個非同步函式,該函式使用 add 方法將其註冊到 內容索引

js
// our content
const item = {
  id: "post-1",
  url: "/posts/amet.html",
  title: "Amet consectetur adipisicing",
  description:
    "Repellat et quia iste possimus ducimus aliquid a aut eaque nostrum.",
  icons: [
    {
      src: "/media/dark.png",
      sizes: "128x128",
      type: "image/png",
    },
  ],
  category: "article",
};

// our asynchronous function to add indexed content
async function registerContent(data) {
  const registration = await navigator.serviceWorker.ready;

  // feature detect Content Index
  if (!registration.index) {
    return;
  }

  // register content
  try {
    await registration.index.add(data);
  } catch (e) {
    console.log("Failed to register content: ", e.message);
  }
}

add 方法也可以在 Service Worker 作用域內使用。

js
// our content
const item = {
  id: "post-1",
  url: "/posts/amet.html",
  title: "Amet consectetur adipisicing",
  description:
    "Repellat et quia iste possimus ducimus aliquid a aut eaque nostrum.",
  icons: [
    {
      src: "/media/dark.png",
      sizes: "128x128",
      type: "image/png",
    },
  ],
  category: "article",
};

self.registration.index.add(item);

規範

規範
Content Index
# content-index-add

瀏覽器相容性

另見