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

浏览器兼容性

另见