Start · Sprachen · JavaScript · Referenz · HTMLParamElement

HTMLParamElement

Schnittstelle

Stellt ein <code>&lt;param&gt;</code>-Element dar, das einem <code>&lt;object&gt;</code>-Element Parameter als Name-Wert-Paar übergibt.

seit JavaScript Baseline: alle Browser (Element in HTML5 als veral deprecated seit ja Kategorie: webapi

Signatur

interface HTMLParamElement extends HTMLElement

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 Attribut name wider.
  • value (string): Wert des Parameters, spiegelt das Attribut value wider.
  • type (string, veraltet): MIME-Typ der Ressource, wenn valueType gleich "ref" ist.
  • valueType (string, veraltet): Legt fest, wie value zu 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

Typ
HTMLParamElement
Beschreibung
Instanzen entstehen über 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);
true <param name="autoplay" value="true">

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);
{ loop: 'false', volume: '0.8' }

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'));
high

// Wichtig · Fallstricke

  • Veraltet: <param> ist im HTML Living Standard als veraltet markiert. Die Eigenschaften type und valueType sind 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 value nachträglich ändert, muss das <object> oft neu einfügen, damit die Änderung greift.
  • Nur Zeichenketten: name und value sind immer string. 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.