内容索引:add() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

注意: 此功能在 Web 工作线程 中可用。

add()ContentIndex 接口的方法,用于在 内容索引 中注册项目。

语法

js
add(contentDescription)

参数

contentDescription

包含以下数据的 Object

id

唯一的 String 标识符。

title

项目的 String 标题。在用户可见的内容列表中使用。

description

项目的 String 描述。在用户可见的内容列表中使用。

url

包含对应 HTML 文档 URL 的 String。需要在当前 服务工作线程 的范围内。

category 可选

定义内容类别的 String。可以是

  • ''String,这是默认值。
  • homepage
  • article
  • video
  • audio
icons 可选

图像资源的 Array,定义为包含以下数据的 Object

src

源图像的 URL String

sizes 可选

图像大小的 String 表示形式。

type 可选

图像的 MIME 类型

label 可选

表示图标的可访问名称的字符串。

返回值

返回一个解析为 undefinedPromise

异常

TypeError

在以下情况下会引发此异常

  • 服务工作线程的注册不存在,或者服务工作线程不包含 FetchEvent
  • idtitledescriptionurl 参数之一缺失、类型不是 String,或者为空 String
  • url 参数与 同源策略 不一致 服务工作线程
  • 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 方法也可以在 服务工作线程 范围内使用。

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-add

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅