ContentIndex: phương thức add()

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Note: This feature is available in Web Workers.

Phương thức add() của giao diện ContentIndex đăng ký một mục với chỉ mục nội dung.

Cú pháp

js
add(contentDescription)

Tham số

contentDescription

Một Object chứa dữ liệu sau:

id

Một mã định danh String duy nhất.

title

Một tiêu đề String cho mục. Được dùng trong các danh sách nội dung hiển thị cho người dùng.

description

Một mô tả String cho mục. Được dùng trong các danh sách nội dung hiển thị cho người dùng.

url

Một String chứa URL của tài liệu HTML tương ứng. URL này phải nằm trong phạm vi của service worker hiện tại.

category Optional

Một String xác định danh mục của nội dung. Có thể là:

  • '' Một String rỗng, đây là giá trị mặc định.
  • homepage
  • article
  • video
  • audio
icons Optional

Một Array các tài nguyên ảnh, được xác định dưới dạng một Object với dữ liệu sau:

src

Một URL String của ảnh nguồn.

sizes Optional

Một String biểu diễn kích thước ảnh.

type Optional

MIME type của ảnh.

label Optional

Một chuỗi biểu diễn tên có thể truy cập của biểu tượng.

Giá trị trả về

Trả về một Promise được giải quyết với undefined.

Ngoại lệ

TypeError

Ngoại lệ này được ném ra trong các điều kiện sau:

  • Service worker registration không tồn tại hoặc service worker không chứa FetchEvent.
  • Một trong các tham số id, title, description hoặc url bị thiếu, không phải kiểu String, hoặc là một String rỗng.
  • Tham số url không cùng same-origin policy với service worker.
  • Một trong các mục trong icons không phải kiểu ảnh, hoặc việc truy xuất một trong các mục trong icons thất bại do lỗi mạng hoặc lỗi giải mã.

Ví dụ

Ở đây, chúng ta khai báo một mục theo đúng định dạng và tạo một hàm bất đồng bộ dùng phương thức add để đăng ký mục đó với chỉ mục nội dung.

js
// nội dung của chúng ta
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",
};

// hàm bất đồng bộ để thêm nội dung được lập chỉ mục
async function registerContent(data) {
  const registration = await navigator.serviceWorker.ready;

  // phát hiện Content Index
  if (!registration.index) {
    return;
  }

  // đăng ký nội dung
  try {
    await registration.index.add(data);
  } catch (e) {
    console.log("Failed to register content: ", e.message);
  }
}

Phương thức add cũng có thể được dùng trong phạm vi service worker.

js
// nội dung của chúng ta
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);

Thông số kỹ thuật

Thông số kỹ thuật
Content Index
# content-index-add

Tương thích trình duyệt

Xem thêm