files/en-us/web/api/contentindex/add/index.md
{{APIRef("Content Index API")}}{{SeeCompatTable}}{{AvailableInWorkers}}
The add() method of the
{{domxref("ContentIndex")}} interface registers an item with the content index.
add(contentDescription)
contentDescription
id
title
description
url
category {{Optional_Inline}}
'' An empty {{jsxref('String')}}, this is the default.homepagearticlevideoaudioicons {{Optional_Inline}}
src
sizes {{Optional_Inline}}
type {{Optional_Inline}}
label {{Optional_Inline}}
Returns a {{jsxref("Promise")}} that resolves with undefined.
id, title, description or url parameter are missing, not of type {{jsxref('String')}}, or an empty {{jsxref('String')}}.url parameter is not {{glossary("same-origin policy")}} with the {{domxref("ServiceWorker", "service worker", "", "nocode")}}.icons are not an image type, or fetching one of the items in icons failed with a network error or decode error.Here we're declaring an item in the correct format and creating an asynchronous
function which uses the add method to register it with the
content index.
// 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);
}
}
The add method can also be used within the
service worker scope.
// 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);
{{Specifications}}
{{Compat}}