内容索引:getAll() 方法

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

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

ContentIndex 接口的 getAll() 方法返回一个 Promise,该方法解析为可迭代的内容索引条目列表。

语法

js
getAll()

参数

此方法不接收任何参数。

返回值

返回一个 Promise,该方法解析为 contentDescription 项的 Array

contentDescription

返回的每个项目都是一个 Object,包含以下数据

id

一个唯一的 String 标识符。

title

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

description

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

url

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

category 可选

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

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

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

src

源图像的 URL String

sizes 可选

图像大小的 String 表示形式。

type 可选

图像的 MIME 类型

label 可选

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

异常

不抛出任何异常。如果内容索引中没有项目,则返回一个空 Array

示例

以下示例显示了一个异步函数,它检索 内容索引 中的项目并迭代每个条目,为界面构建一个列表。

js
async function createReadingList() {
  // access our service worker registration
  const registration = await navigator.serviceWorker.ready;

  // get our index entries
  const entries = await registration.index.getAll();

  // create a containing element
  const readingListElem = document.createElement("div");

  // test for entries
  if (entries.length === 0) {
    // if there are no entries, display a message
    const message = document.createElement("p");
    message.innerText =
      "You currently have no articles saved for offline reading.";

    readingListElem.append(message);
  } else {
    // if entries are present, display in a list of links to the content
    const listElem = document.createElement("ul");

    for (const entry of entries) {
      const listItem = document.createElement("li");

      const anchorElem = document.createElement("a");
      anchorElem.innerText = entry.title;
      anchorElem.setAttribute("href", entry.url);

      listElem.append(listItem);
    }

    readingListElem.append(listElem);
  }
}

规范

规范
内容索引
# content-index-getall

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅