Spec-Zone.ru › Web APIs

FencedFrameConfig

Ограниченная доступность

Данная функция не относится к Baseline, так как она не работает в некоторых из самых распространённых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментальная: Это экспериментальная технология экспериментальная технология
Перед использованием в производстве внимательно изучите таблицу совместимости браузеров таблицу совместимости браузеров.

Интерфейс FencedFrameConfig представляет собой навигацию по <fencedframe>, т.е. какой контент будет отображаться в нём.

FencedFrameConfig объекты нельзя создать вручную с помощью JavaScript. Они возвращаются из источника, такого как API защищённой аудитории, и устанавливаются в качестве значения HTMLFencedFrameElement.config.

Объект FencedFrameConfig имеет доступный метод, но также отображает внутреннюю конфигурационную информацию, содержащую непрозрачные свойства, недоступные из JavaScript. Это включает в себя информацию о источнике загруженного контента и группах интересов для рекламных целей. Это ключевой момент в том, как фреймы fenced помогают реализовать ключевые сценарии использования, сохраняя при этом конфиденциальность пользователя.

Методы экземпляров

setSharedStorageContext() Экспериментальная

Передает данные из документа встраивания в общее хранилище <fencedframe>.

Примеры

Базовое использование

Чтобы установить, какой контент будет отображаться в <fencedframe>, используемый API (например, Защищённая аудитория или Общее хранилище) генерирует объект FencedFrameConfig, который затем устанавливается в качестве значения свойства config объекта <fencedframe>.

В следующем примере берётся объект FencedFrameConfig из аукциона рекламы API защищённой аудитории, который затем используется для отображения выигрышной рекламы в <fencedframe>:

const frameConfig = await navigator.runAdAuction({
  // ...auction configuration
  resolveToConfig: true,
});

const frame = document.createElement("fencedframe");
frame.config = frameConfig;

Примечание: resolveToConfig: true необходимо передать в вызов runAdAuction(), чтобы получить объект FencedFrameConfig. Если это не сделано, результат Promise будет разрешён до URN, который может быть использован только в <iframe>.

Передача контекстных данных через setSharedStorageContext()

Вы можете использовать API частной агрегации, чтобы создавать отчёты, которые объединяют данные на уровне событий внутри фреймов fenced с контекстными данными из встраивающего документа. setSharedStorageContext() можно использовать для передачи контекстных данных от embedдера в работающие модули общего хранилища, инициированные API защищённой аудитории.

В следующем примере мы сохраняем данные как из встраивающей страницы, так и из фрейма fenced в общем хранилище.

На странице встраивания мы установим имитирующий идентификатор события в качестве контекста общего хранилища, используя setSharedStorageContext():

const frameConfig = await navigator.runAdAuction({ resolveToConfig: true });

// Data from the embedder that you want to pass to the shared storage worklet
frameConfig.setSharedStorageContext("some-event-id");

const frame = document.createElement("fencedframe");
frame.config = frameConfig;

Внутри фрейма fenced мы добавим модуль worklet с помощью window.sharedStorage.worklet.addModule(), а затем отправим данные на уровне событий в работающий модуль общего хранилища с помощью window.sharedStorage.run() (это не связано с контекстными данными из встраивающего документа):

const frameData = {
  // Data available only inside the fenced frame
};

await window.sharedStorage.worklet.addModule("reporting-worklet.js");

await window.sharedStorage.run("send-report", {
  data: {
    frameData,
  },
});

В работающем модуле reporting-worklet.js мы считываем идентификатор события встраивающего документа из sharedStorage.context и данные на уровне события фрейма из объекта данных, а затем передаём их в отчёт через частную агрегацию:

class ReportingOperation {
  convertEventIdToBucket(eventId) { ... }
  convertEventPayloadToValue(info) { ... }

  async run(data) {
    // Data from the embedder
    const eventId = sharedStorage.context;

    // Data from the fenced frame
    const eventPayload = data.frameData;

    privateAggregation.sendHistogramReport({
      bucket: convertEventIdToBucket(eventId),
      value: convertEventPayloadToValue(eventPayload)
    });
  }
}

register('send-report', ReportingOperation);

Спецификации

Спецификация
Фрейм fenced
# fenced-frame-config-interface

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
FencedFrameConfig 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115
setSharedStorageContext 115 115 Нет 101 Нет 115 Нет 77 Нет 23.0 115

См. также

  • Фреймы fenced на developers.google.com
  • Песочница конфиденциальности на developers.google.com

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FencedFrameConfig

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API