Signatur
Beschreibung
Die Eigenschaft allow spiegelt das gleichnamige Inhaltsattribut eines <fencedframe>-Elements wider. Der Wert ist eine Zeichenkette mit einer Permissions Policy. Sie bestimmt, welche Browserfunktionen der Inhalt im Fenced Frame nutzen darf, etwa attribution-reporting, private-aggregation oder shared-storage. Die Syntax entspricht der von iframe.allow: Direktiven werden durch Semikolons getrennt, zum Beispiel "attribution-reporting; shared-storage".
Fenced Frames sind ein Baustein der Privacy Sandbox. Sie betten Inhalte ein, meist Werbung, die über die Protected Audience API oder sharedStorage.selectURL() ausgewählt wurden. Dabei soll die einbettende Seite keine seitenübergreifenden Daten erfahren. Deshalb ist die Kommunikation zwischen Seite und Frame stark eingeschränkt. Auch die Berechtigungen, die man vergeben kann, sind enger begrenzt als bei einem <iframe>.
Ein wichtiger Unterschied zum <iframe>: Der Inhalt wird nicht über eine URL geladen, sondern über ein FencedFrameConfig-Objekt in der Eigenschaft config. Die Config kann festlegen, welche Berechtigungen der Inhalt benötigt. Nur wenn die Richtlinie aus allow (zusammen mit der Richtlinie der Elternseite) diese Berechtigungen gewährt, lädt der Frame den Inhalt. Setzen Sie allow deshalb bevor Sie config zuweisen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | "" | Nur beim Setzen: eine Permissions-Policy-Zeichenkette, z. B. "attribution-reporting; private-aggregation". Der Wert wird unverändert in das Attribut allow geschrieben. |
Rückgabewert
allow. Fehlt das Attribut, ist es eine leere Zeichenkette.Beispiele
Attribut lesen und setzen
const frame = document.createElement('fencedframe');
console.log(JSON.stringify(frame.allow)); // Standardwert
frame.allow = 'attribution-reporting; shared-storage';
console.log(frame.allow);
console.log(frame.getAttribute('allow'));
Werbung aus einer Protected-Audience-Auktion einbetten
const showAd = async (auctionConfig) => {
// resolveToConfig: true liefert ein FencedFrameConfig-Objekt statt einer URN
const config = await navigator.runAdAuction({
...auctionConfig,
resolveToConfig: true,
});
if (!config) return; // kein Gewinner in der Auktion
const frame = document.createElement('fencedframe');
// Berechtigungen VOR der Zuweisung von config setzen
frame.allow = 'attribution-reporting; private-aggregation';
frame.width = 300;
frame.height = 250;
frame.config = config;
document.querySelector('#ad-slot').append(frame);
};
Feature-Erkennung mit Rückfall
const supportsFencedFrames = () =>
'HTMLFencedFrameElement' in window &&
'allow' in HTMLFencedFrameElement.prototype;
if (supportsFencedFrames()) {
const frame = document.querySelector('fencedframe');
frame.allow = 'shared-storage';
console.log('Fenced Frames werden unterstützt:', frame.allow);
} else {
console.log('Keine Fenced-Frame-Unterstützung – Rückfall auf <iframe>.');
}
// Wichtig · Fallstricke
- Kompatibilität: Die Funktion ist experimentell und steht nur in Chromium-Browsern ab Version 117 bereit. Außerdem müssen die Privacy-Sandbox-APIs aktiviert sein. Firefox und Safari unterstützen
<fencedframe>nicht. Prüfen Sie die Unterstützung daher immer vorab. - Reihenfolge: Ändert man
allowerst nach der Zuweisung vonconfig, wirkt sich das nicht auf den bereits geladenen Inhalt aus. Die Berechtigungen gelten erst bei der nächsten Navigation. - Eingeschränkte Berechtigungen: In Fenced Frames lassen sich nicht alle Funktionen freigeben, die bei
iframe.allowmöglich sind. Verlangt die Config Berechtigungen, die die Richtlinie nicht gewährt, lädt der Frame den Inhalt nicht. - Keine Prüfung beim Setzen: Der Browser prüft die Zeichenkette beim Setzen nicht. Tippfehler in Direktiven werden stillschweigend ignoriert.
- Auch die Permissions Policy der einbettenden Seite (HTTP-Header
Permissions-Policy) muss die jeweiligen Funktionen erlauben.