Signatur
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
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);
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));
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));
// 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 Ereignisseloadunderroroder die EigenschaftcontentDocument. - Da
willValidateimmerfalseist, wird auf<object>nie eininvalid-Ereignis ausgelöst. Das Element blockiert auch nie das Absenden eines Formulars. - Einige ältere Browser werten
validity.customErrornachsetCustomValidity()unterschiedlich aus. Das Ergebnis voncheckValidity()ist aber überall gleich. - Kompatibilität: wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge).