影響あり HTML フォームの action 属性が空か未設定の場合、action プロパティがドキュメント URL を返すようになりました

公開日: | カテゴリー: DOM, HTML

概要

Firefox 56 以降、<form> HTML 要素上の action 属性が空になっているか設定されていない場合、それに対応する HTMLFormElement DOM オブジェクトの action プロパティは、空文字列の代わりに実際のフォーム送信先 URL、つまりドキュメントの URL を返します。

<button><input> 要素上の formaction 属性を反映した HTMLButtonElementHTMLInputElement オブジェクト上の formAction プロパティにも同じことが当てはまります。

この変更は最新の HTML 仕様に準拠するため行われ、今のところ 1 件のみ互換性問題が報告されています。他のブラウザーはまだ仕様に従っていないことから、こうした問題は本稿執筆時点では Firefox 上でのみ発生する可能性があります。

以下のように、ウェブ開発者が新旧両方の挙動に対応するのは簡単です。

// これまで通り空文字列を得る (後方互換性)
let action_url = form.action === document.URL ? "" : form.action;

// 実際の送信先 URL を得る (前方互換性)
let actual_action_url = form.action || document.URL;

参考資料