Start · Sprachen · JavaScript · Referenz · HTMLObjectElement.checkValidity()

HTMLObjectElement.checkValidity()

Methode

Prüft, ob ein <code>&lt;object&gt;</code>-Element gültig ist, und gibt immer <code>true</code> zurück, da <code>&lt;object&gt;</code> nie an der Einschränkungsvalidierung teilnimmt.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

HTMLObjectElement.prototype.checkValidity()

Beschreibung

Die Methode checkValidity() gehört zur Constraint Validation API (Einschränkungsvalidierung), die alle formularbezogenen Elemente anbieten. HTMLObjectElement implementiert sie, weil <object> historisch als formularzugehöriges Element gilt (es besitzt z. B. die Eigenschaften form, validity und validationMessage).

Ein <object>-Element ist aber nie ein Kandidat für die Einschränkungsvalidierung. Deshalb gibt checkValidity() immer true zurück, und es wird kein invalid-Ereignis ausgelöst. Auch setCustomValidity() ändert daran nichts, weil das Element von der Validierung ausgeschlossen bleibt.

Praktisch brauchen Sie die Methode fast nur für generischen Code, der über alle Elemente in form.elements läuft und bei jedem checkValidity() aufruft. So müssen Sie <object> nicht gesondert behandeln. Um ein ganzes Formular zu prüfen, verwenden Sie HTMLFormElement.checkValidity() oder reportValidity().

Rückgabewert

Typ
boolean
Beschreibung
Immer true, da <object>-Elemente nicht an der Einschränkungsvalidierung teilnehmen.

Beispiele

Einfacher Aufruf auf einem object-Element

// HTML: <object id="pdf" data="handbuch.pdf" type="application/pdf"></object>
const obj = document.getElementById('pdf');
console.log(obj.checkValidity());
console.log(obj.willValidate);
true false

setCustomValidity() hat keine Wirkung

const obj = document.createElement('object');
obj.setCustomValidity('Das wird ignoriert');

console.log(obj.checkValidity());
console.log(obj.validity.customError);
console.log(JSON.stringify(obj.validationMessage));
true false (bzw. true, je nach Browser – die Gültigkeit bleibt trotzdem true) ""

Generische Prüfung aller Formularelemente

// Das Formular enthält Eingabefelder und ein <object>
const form = document.querySelector('form');

const ungueltig = [...form.elements].filter((el) => !el.checkValidity());

// <object> taucht hier nie auf, weil es immer true liefert
console.log(ungueltig.map((el) => el.name || el.tagName));
z. B. ["email"]

// Wichtig · Fallstricke

  • Immer true: Verlassen Sie sich nicht auf diese Methode, um zu prüfen, ob das eingebettete Objekt geladen wurde oder die Ressource gültig ist. Dafür gibt es die Ereignisse load und error oder die Eigenschaft contentDocument.
  • Da willValidate immer false ist, wird auf <object> nie ein invalid-Ereignis ausgelöst. Das Element blockiert auch nie das Absenden eines Formulars.
  • Einige ältere Browser werten validity.customError nach setCustomValidity() unterschiedlich aus. Das Ergebnis von checkValidity() ist aber überall gleich.
  • Kompatibilität: wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).