Form-associated custom elements
ElementInternals は Document Object Model のインターフェイスで、カスタム要素を HTML フォームに完全に参加させる方法をウェブ開発者に提供します。標準的な HTML フォーム要素を扱うのと同じように、これらの要素を扱うためのユーティリティを提供し、 Accessibility Object Model も要素で使えるようにします。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 77 | 79 | 93 | 16.4 | 77 | 16.4 | |
| checkValidity() は ElementInternals インタフェイスのメソッドで、要素が適用された制約検証のルールを満たしているかどうかをチェックします。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| form は ElementInternals インターフェイスの読み取り専用プロパティで、この要素に関連付けられた HTMLFormElement を返します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| labels は ElementInternals インターフェイスのプロパティで、要素に関連付けられたラベルを返します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| reportValidity() は ElementInternals インターフェイスのメソッドで、適用された制約検証ルールをこの要素が満たしているかどうかをチェックします。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| setFormValue() は ElementInternals インターフェイスのメソッドで、このメソッドは、要素の送信値と状態を設定し、これらをユーザーエージェントに伝えます。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| setValidity() は ElementInternals インターフェイスのメソッドで、この要素の妥当性を設定します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| validationMessage は ElementInternals インターフェイスの読み取り専用プロパティで、この要素の検証メッセージを返します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| validity は ElementInternals インターフェイスの読み取り専用プロパティで、制約検証に関して要素が取り得るさまざまな検証状態を表す ValidityState オブジェクトを返します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| willValidate は ElementInternals インターフェイスの読み取り専用プロパティで、この要素が制約検証の候補である送信可能要素である場合に true を返します。 | 77 | 79 | 98 | 16.4 | 77 | 16.4 |
| HTMLElement.attachInternals() メソッドは、 ElementInternals オブジェクトを返します。このメソッドにより、カスタム要素が HTML フォームに参加することができるようになります。 ElementInternals インターフェイスは、標準的な HTML フォーム要素と同じようにこれらの要素を扱うためのユーティリティを提供し、また、要素に対してアクセシビリティオブジェクトモデルを公開します。 | 77 | 79 | 93 | 16.4 | 77 | 16.4 |
基本構文
class CustomCheckbox extends HTMLElement {
static formAssociated = true;
constructor() {
super();
this.internals_ = this.attachInternals();
}
// …
}
window.customElements.define("custom-checkbox", CustomCheckbox);
let element = document.createElement("custom-checkbox");
let form = document.createElement("form");
// Append element to form to associate it
form.appendChild(element);
console.log(element.internals_.form);
// expected output: <form><custom-checkbox></custom-checkbox></form> 実務での使いどころ
-
Form-associated custom elements の活用
ElementInternals は Document Object Model のインターフェイスで、カスタム要素を HTML フォームに完全に参加させる方法をウェブ開発者に提供します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。