Start · Sprachen · JavaScript · Referenz · HTMLObjectElement.validationMessage

HTMLObjectElement.validationMessage

Eigenschaft

Schreibgeschützter String mit der lokalisierten Validierungsmeldung eines <code>&lt;object&gt;</code>-Elements. Da <code>&lt;object&gt;</code> nie validiert wird, ist er in der Praxis immer leer.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLObjectElement.validationMessage

Beschreibung

Die Eigenschaft validationMessage gehört zur Constraint Validation API. Sie gibt einen lokalisierten Text zurück, der erklärt, welche Validierungsregel ein Formular-Steuerelement verletzt. HTMLObjectElement implementiert diese API, weil ein <object>-Element über das Attribut form einem Formular zugeordnet werden kann und damit als listed element gilt.

Laut HTML-Spezifikation ist ein <object>-Element aber nie ein Kandidat für die Formularvalidierung. Deshalb ist willValidate immer false, checkValidity() liefert immer true, und validationMessage gibt immer einen leeren String ("") zurück. Das gilt selbst dann, wenn vorher setCustomValidity() mit einer Meldung aufgerufen wurde.

Die Eigenschaft ist trotzdem nützlich: Generischer Code, der alle Elemente aus form.elements durchgeht und Fehlermeldungen einsammelt, kann sie ohne Sonderfall verwenden. <object>-Elemente verursachen dann einfach nie eine Meldung.

Rückgabewert

Typ
string
Beschreibung
Die lokalisierte Validierungsmeldung. Bei <object> ist das immer der leere String "", weil das Element nicht validiert wird.

Beispiele

Meldung eines object-Elements auslesen

// <form id="f"><object id="media" data="film.mp4" type="video/mp4"></object></form>
const obj = document.getElementById('media');

console.log(obj.willValidate);        // wird nicht validiert
console.log(JSON.stringify(obj.validationMessage));
false ""

setCustomValidity() hat keine Wirkung auf die Meldung

const obj = document.createElement('object');
document.body.append(obj);

obj.setCustomValidity('Plugin fehlt!');
console.log(JSON.stringify(obj.validationMessage));
console.log(obj.checkValidity());
"" true

Fehlermeldungen aller Formularelemente generisch einsammeln

// <form id="bestellung">
//   <input name="email" type="email" required>
//   <object name="vorschau" data="vorschau.pdf"></object>
// </form>
const form = document.getElementById('bestellung');

const fehler = [...form.elements]
  .filter((el) => el.validationMessage !== '')
  .map((el) => `${el.name}: ${el.validationMessage}`);

// Das <object> taucht nie auf – nur echte Validierungsfehler
console.log(fehler);
["email: Füllen Sie dieses Feld aus."] // Text hängt von Browser und Sprache ab

// Wichtig · Fallstricke

  • Immer leer: Weil <object> von der Validierung ausgeschlossen ist, gibt die Eigenschaft immer "" zurück. Für eigene Prüfungen, etwa ob eine eingebettete Ressource geladen wurde, taugt sie nicht. Prüfen Sie stattdessen z. B. das load/error-Ereignis oder contentDocument.
  • Schreibgeschützt: Eine Zuweisung wie obj.validationMessage = "…" wird stillschweigend ignoriert und wirft im Strict Mode einen TypeError.
  • Lokalisierung: Bei anderen Elementen wie <input> hängt der Meldungstext von Browser und Sprache ab. Vergleichen Sie im Code daher nie mit festen Texten, sondern mit validity-Flags.
  • Kompatibilität: Wird von allen aktuellen Browsern unterstützt.