2017-01-13 14 views
2

先日、Mozilla Developer Networkで、document.forms[x].elementコレクションにtype = "image"という入力要素が含まれていないことが読み取られました。何故なの? Firefox 50.1.0でこれをチェックしたところ、はdocument.forms.elementsに見つかりませんでした。JavaScript:<input type = "image">要素がdocument.forms.elementsに表示されないのはなぜですか?

私は立ち往生していません。私はちょうどなぜこれが(src=""アトリビュートとそれが表示するイメージの存在以外)であるのか疑問に思っています。

Mozilla Developer Network状態:

HTMLFormElement.elements性タイプを有する入力 要素を除いて、FORM要素に含まれるすべてのフォームコントロール のHTMLFormControlsCollectionを(HTML 4 HTMLCollection)を返し画像の属性。

WHATWGは言う:

要素IDL属性は入力を除いて、そのフィルタマッチ フォームの所有者がフォーム要素である要素を列挙されたフォーム要素をルートHTMLFormControlsCollection を返す必要があります要素タイプ のタイプ属性がイメージボタン状態にあります。これは、 の歴史的理由のために、この特定のコレクションから除外する必要があります。

World Wide Web Consortiumは言う:

画像ボタンの状態は、ユーザ は、ユーザが送信することができ、そこから座標と提出フォーム、あるいはボタン を選択できる画像のいずれかを表します。形。要素はボタン、 、特に送信ボタンです。

+3

おそらく、[*仕様*](https://html.spec.whatwg.org/multipage/forms.html#dom-form-elements)(MDNよりも信頼性が高い)に提供されているリンクに従ってください。 : "* ... type属性がImage Button状態の入力要素を除いて、歴史的な理由からこの特定のコレクションから除外されなければならない*" – RobG

+0

https://html.spec.whatwg.org/multipage /forms.html#dom-form-elementsは「歴史的な理由から*」と言っています。それ以上の説明がなければ、彼らは正当な理由がないことを意味するだろうが、後方互換性を保たないと何かが壊れる。 – Bergi

+1

@ Berg - 非常に初期の[* DOM 2 spec *](https://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-76728479)(2003)は、この制限があるので、歴史は非常に長いです。これは、ブラウザが何をするべきではなく、何をするかを記述した "生活仕様"の一例ですか? – RobG

答えて

1

私は、問題に関するリソースの数を確認し、具体的にバック7月15日、1999年にさかのぼり、このウェブサイトを発見した:

http://www.alanflavell.org.uk/www/trysub.html

タイプ=画像と入力要素は、特に務めていました他のHTMLFormElementが持つことのできなかった機能や機能を含んでいました。ユーザーが地図上の特定の地点を選んだ地図やその他のグラフィックスに使用されていることを覚えています。座標はサーバーに戻され、cgiアプリケーションはクリックされた座標に基づいてコンテンツを配信します。私の意見では、それは現代のブラウザーに残っている少数の古風なものの一つであり、ゾンビの特徴と考えることができます。 MozillaのBugzillaに

もイメージでも入力要素に準拠でもないことを、この要素の異常な動作を報告していた問題が発生することができます。

https://bugzilla.mozilla.org/show_bug.cgi?id=110595

私はNetscape Navigatorのソースを見つけることができないのです1998年のコードをすばやく修正し、またこの中にこれに関する有益なコメントがあるとは考えていません。IMAGE入力要素が非常に奇妙で奇妙で、他のものとは違うので、この決定が行われたことを確信しています。仕様、設計、開発の努力によって、その方向性を変えることはできません。これをJavaScriptコアのFORM要素として実装すると、DOMはそれだけの価値がありませんでした。

私が見つけたことはすべてこの結論につながりますが、決定を下し、この仕様決定を導いた最初の実装を行った人物を見つける必要があるという実質的な証拠を得ることです。もちろん、それは歴史的な観点から刺激的です。

+0

要約すると、input type = "image"の元の完全な意図は装飾的な送信ボタンを作成するだけではなく、初期のHTML仕様で 'value'属性を指定する必要はありませんでした。したがって、必須の値属性がなく、座標とイメージマップが強調されていれば、 'type =" image "'入力ボタンは他の真のスカラー入力タイプ。必須の値属性はなく、document.forms [x] .elementsに必須の存在はありません。 –

+0

正直な努力をいただきありがとうございます。 –

関連する問題