Signatur
Beschreibung
HTMLParamElement ist die DOM-Schnittstelle für <param>-Elemente. Sie erbt alle Eigenschaften und Methoden von HTMLElement und bringt zusätzlich die Eigenschaften name und value mit. Beide spiegeln die gleichnamigen HTML-Attribute wider. Ein <param>-Element steht immer als Kind eines <object>-Elements und übergibt dem eingebetteten Inhalt (früher meist ein Plugin wie Flash oder ein Java-Applet) Konfigurationswerte.
Wichtige Eigenschaften:
name(string): Name des Parameters, spiegelt das Attributnamewider.value(string): Wert des Parameters, spiegelt das Attributvaluewider.type(string, veraltet): MIME-Typ der Ressource, wennvalueTypegleich"ref"ist.valueType(string, veraltet): Legt fest, wievaluezu verstehen ist:"data","ref"oder"object".
In der Praxis begegnet man der Schnittstelle vor allem in älterem Code oder bei Wartungsarbeiten an Seiten mit <object>-Einbettungen. Da Browser-Plugins inzwischen abgeschafft sind, gilt <param> im HTML Living Standard als veraltet. Für neue Projekte sollte man Konfigurationswerte lieber über data-*-Attribute, URL-Parameter oder postMessage weitergeben.
Rückgabewert
document.createElement("param") oder beim Parsen von <param>-Tags. Einen öffentlichen Konstruktor gibt es nicht.Beispiele
param-Element erzeugen und an ein object anhängen
const obj = document.createElement('object');
obj.data = 'player.swf';
obj.type = 'application/x-shockwave-flash';
const param = document.createElement('param');
param.name = 'autoplay';
param.value = 'true';
obj.append(param);
document.body.append(obj);
console.log(param instanceof HTMLParamElement);
console.log(obj.innerHTML);
Alle Parameter eines object als Objekt auslesen
// HTML: <object id="video" data="film.mp4">
// <param name="loop" value="false">
// <param name="volume" value="0.8">
// </object>
const video = document.getElementById('video');
const config = Object.fromEntries(
[...video.querySelectorAll(':scope > param')]
.map((p) => [p.name, p.value])
);
console.log(config);
Parameterwert nachträglich ändern
const setParam = (objectEl, name, value) => {
let param = [...objectEl.querySelectorAll('param')]
.find((p) => p.name === name);
if (!param) {
param = document.createElement('param');
param.name = name;
objectEl.append(param);
}
param.value = String(value);
return param;
};
const obj = document.createElement('object');
const p = setParam(obj, 'quality', 'high');
console.log(p.getAttribute('value'));
// Wichtig · Fallstricke
- Veraltet:
<param>ist im HTML Living Standard als veraltet markiert. Die EigenschaftentypeundvalueTypesind schon länger veraltet und sollten nicht mehr benutzt werden. - Wirkung meist nachträglich nicht sichtbar: Viele eingebettete Inhalte lesen Parameter nur einmal beim Laden. Wer
valuenachträglich ändert, muss das<object>oft neu einfügen, damit die Änderung greift. - Nur Zeichenketten:
nameundvaluesind immerstring. Zahlen oder Wahrheitswerte werden umgewandelt, beim Auslesen muss man sie also selbst wieder zurückwandeln. - Kompatibilität: Die Schnittstelle gibt es in allen Browsern. Flash, Java-Applets und andere NPAPI-Plugins, für die
<param>ursprünglich gedacht war, laufen in modernen Browsern aber nicht mehr. - Sicherheit: Parameterwerte aus Benutzereingaben sollte man prüfen, bevor man sie übernimmt. Das gilt besonders für URLs, die an eingebettete Inhalte gehen.