Signatur
Beschreibung
Die Eigenschaft attributionSrc gibt den Wert des HTML-Attributs attributionsrc eines <script>-Elements wieder und kann ihn auch setzen. Sie gehört zur Attribution Reporting API. Mit dieser API lassen sich Konversionen messen, zum Beispiel „Anzeige gesehen → später gekauft“, ohne dass dafür Drittanbieter-Cookies nötig sind.
Ist das Attribut gesetzt, schickt der Browser beim Laden des Skripts den Anfrage-Header Attribution-Reporting-Eligible mit. Der Server kann dann mit Attribution-Reporting-Register-Source eine Attributionsquelle registrieren oder mit Attribution-Reporting-Register-Trigger einen Attributions-Trigger. Der Browser gleicht beide später ab und sendet verzögert Berichte, die den Datenschutz wahren.
- Leerer String (
""): Die Registrierung läuft über dieselbe Anfrage wie das Skript. Der Server hintersrcantwortet also mit den Registrierungs-Headern. - Eine oder mehrere URLs, durch Leerzeichen getrennt: Der Browser schickt an jede URL zusätzlich eine eigene
keepalive-Anfrage mit dem Eligible-Header. So kann ein anderer Server die Registrierung übernehmen, etwa ein Ad-Tech-Anbieter, wenn das Skript von einem CDN kommt.
Die Eigenschaft ist sinnvoll, wenn man Skript-Tags dynamisch erzeugt, zum Beispiel Tracking- oder Conversion-Tags, die ein Tag-Manager nachlädt. Wichtig: attributionSrc muss gesetzt sein, bevor src zugewiesen und das Element eingefügt wird. Sonst ist die Anfrage schon ohne den Header unterwegs.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | string | Nur beim Setzen: "" für eine Registrierung über die Skript-Anfrage selbst, oder eine durch Leerzeichen getrennte Liste von URLs, an die separate Registrierungsanfragen gehen. |
Rückgabewert
attributionsrc. Fehlt das Attribut, ist es ein leerer String. Bei URLs wird der Wert so zurückgegeben, wie er im Attribut steht.Beispiele
Conversion-Skript dynamisch laden (Registrierung über die Skript-Anfrage)
// Auf der Bestellbestätigungsseite einen Trigger registrieren
const script = document.createElement("script");
// Zuerst attributionSrc setzen, danach src!
script.attributionSrc = "";
script.src = "https://shop.example/js/conversion.js";
document.body.append(script);
console.log(script.hasAttribute("attributionsrc"));
Registrierung an separate Endpunkte delegieren
const script = document.createElement("script");
// Zwei Ad-Tech-Server sollen registrieren – durch Leerzeichen getrennt
const endpoints = [
"https://adtech-a.example/register-trigger?order=4711",
"https://adtech-b.example/register-trigger?order=4711"
];
script.attributionSrc = endpoints.join(" ");
script.src = "https://cdn.example/lib/checkout.js";
document.head.append(script);
console.log(script.attributionSrc.split(" ").length);
Feature-Erkennung und Wert eines statischen Tags auslesen
// HTML: <script id="ad" src="https://ads.example/tag.js" attributionsrc></script>
const supported = "attributionSrc" in HTMLScriptElement.prototype &&
document.featurePolicy?.allowsFeature?.("attribution-reporting") !== false;
const tag = document.getElementById("ad");
if (supported && tag) {
console.log(`attributionsrc: "${tag.attributionSrc}"`);
} else {
console.log("Attribution Reporting wird nicht unterstützt");
}
// Wichtig · Fallstricke
- Browser-Kompatibilität: Experimentell und nur in Chromium-Browsern verfügbar (Chrome, Edge). Firefox und Safari unterstützen die Eigenschaft nicht. Google hat angekündigt, die Attribution Reporting API zusammen mit anderen Privacy-Sandbox-Technologien auslaufen zu lassen. Nicht ohne Fallback in Produktion verwenden, immer vorher per Feature-Erkennung prüfen.
- Reihenfolge: Wird
attributionSrcerst nachsrcgesetzt oder nachdem das Element im DOM ist, fehlt der HeaderAttribution-Reporting-Eligible. Die Registrierung findet dann nicht statt. - Voraussetzungen: Die Seite muss in einem sicheren Kontext laufen (HTTPS). Die Permissions-Policy
attribution-reportingdarf das Feature nicht blockieren, was besonders in iframes wichtig ist. Die Registrierungs-Endpunkte müssen ebenfalls HTTPS verwenden. - Kein Fehler bei Fehlschlag: Scheitert die Registrierung, etwa wegen falscher Header oder fehlender Unterstützung, wirft die Eigenschaft keinen Fehler. Das Skript wird trotzdem ganz normal geladen und ausgeführt.
- Datenschutz: Berichte kommen absichtlich verzögert und mit Rauschen an. Für Echtzeit-Analysen sind sie nicht geeignet.