FencedFrameConfig
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das FencedFrameConfig
-Interface repräsentiert die Navigation eines <fencedframe>
, d.h. welchen Inhalt es anzeigen wird.
FencedFrameConfig
-Objekte können nicht manuell über JavaScript konstruiert werden. Sie werden aus einer Quelle wie der Protected Audience API zurückgegeben und als Wert von HTMLFencedFrameElement.config
gesetzt.
Eine FencedFrameConfig
-Objektinstanz hat eine sichtbare Methode, ist jedoch auch mit internen Konfigurationsinformationen verbunden, die undurchsichtige Eigenschaften enthalten, die nicht über JavaScript zugänglich sind. Dies umfasst Informationen wie die Quelle des geladenen Inhalts und Interessengruppen für Werbezwecke. Dies ist entscheidend dafür, wie Fenced Frames helfen, wichtige Anwendungsfälle zu implementieren und gleichzeitig die Privatsphäre der Benutzer zu respektieren.
Instanzmethoden
-
Übergibt Daten aus dem einbettenden Dokument an den
<fencedframe>
gemeinsamen Speicher.
Beispiele
Grundlegende Nutzung
Um festzulegen, welcher Inhalt in einem <fencedframe>
gezeigt wird, generiert eine verwendende API (wie Protected Audience oder Shared Storage) ein FencedFrameConfig
-Objekt, das dann als Wert der config
-Eigenschaft des <fencedframe>
gesetzt wird.
Das folgende Beispiel erhält ein FencedFrameConfig
von einer Ad-Auktion der Protected Audience API, das dann verwendet wird, um die gewinnende Anzeige in einem <fencedframe>
anzuzeigen:
const frameConfig = await navigator.runAdAuction({
// … auction configuration
resolveToConfig: true,
});
const frame = document.createElement("fencedframe");
frame.config = frameConfig;
Note:
resolveToConfig: true
muss in denrunAdAuction()
-Aufruf übergeben werden, um einFencedFrameConfig
-Objekt zu erhalten. Wenn es nicht gesetzt ist, wird das resultierendePromise
in eine URN aufgelöst, die nur in einem<iframe>
verwendet werden kann.
Übertragung von kontextuellen Daten über setSharedStorageContext()
Sie können die Private Aggregation API verwenden, um Berichte zu erstellen, die Ereignislevel-Daten innerhalb von Fenced Frames mit kontextuellen Daten aus dem einbettenden Dokument kombinieren. setSharedStorageContext()
kann verwendet werden, um kontextuelle Daten vom Einbettungsdokument an geteilte Speicher-Worklets zu übergeben, die von der Protected Audience API initiiert werden.
Im folgenden Beispiel speichern wir Daten sowohl von der einbettenden Seite als auch dem Fenced Frame im gemeinsamen Speicher.
Auf der einbettenden Seite setzen wir eine simulierte Ereignis-ID als gemeinsamen Speicher-Kontext mit 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;
Innerhalb des Fenced Frames fügen wir das Worklet-Modul mit window.sharedStorage.worklet.addModule()
hinzu und senden dann die Ereignislevel-Daten in das gemeinsame Speicher-Worklet mit window.sharedStorage.run()
(dies ist nicht mit den kontextuellen Daten des einbettenden Dokuments verbunden):
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,
},
});
Im reporting-worklet.js
-Worklet lesen wir die Ereignis-ID des einbettenden Dokuments aus sharedStorage.context
und die Ereignislevel-Daten des Frames aus dem Datenobjekt, dann berichten wir sie über Private Aggregation:
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);
Spezifikationen
Specification |
---|
Fenced Frame # fenced-frame-config-interface |
Browser-Kompatibilität
Siehe auch
- Fenced Frames auf privacysandbox.google.com
- The Privacy Sandbox auf privacysandbox.google.com