Start · Sprachen · JavaScript · Referenz · HTMLFencedFrameElement.allow

HTMLFencedFrameElement.allow

Eigenschaft

Liest oder setzt den Wert des HTML-Attributs <code>allow</code> eines <code>&lt;fencedframe&gt;</code>. Das Attribut legt die Berechtigungsrichtlinie (Permissions Policy) für den eingebetteten Inhalt fest.

seit JavaScript Experimentell: Chrome/Edge 117+ (Privacy Sandbox), deprecated seit ja Kategorie: webapi

Signatur

HTMLFencedFrameElement.allow

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

Typ
string
Beschreibung
Der aktuelle Wert des Attributs 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'));
"" attribution-reporting; shared-storage attribution-reporting; shared-storage

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>.');
}
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 allow erst nach der Zuweisung von config, 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.allow mö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.