この背後にある根本的な理由は、それがHTML入力フィールドに後で加えた、および既存のWebページとの下位互換性を維持するためにそのようになるために必要なことです。
<input>
タグが最初に定義されたとき、その機能は極端に制限されていました。 disabled
またはreadonly
の属性はありませんでした。また、他の多くのプロパティも今日は当たり前です。
これらはすべて後で追加されましたが、追加されるまでに多くのWebサイトですでに<input>
フィールドが使用されていたため、無効にする機能は使用していない既存のコードに影響を与えずに機能しなければなりませんでした。したがって、デフォルトの状態はenabled
でなければなりませんでした。
また、これはブール値フラグでなければならなかったため、enabled=true
ではなくdisabled
となっています。後者はキーと値のペア属性でした。これは良い選択ではありませんでした。
は、次のことを考えてみましょう:
enabled=false
enabled=0
enabled=FALSE
enabled=no
enabled=disabled
enabled=flase
etc...
ブラウザが可能な値の膨大な数に対処できるようにしなければなりませんでした。それをブーリアンフラグにすることは事を非常に単純化します。 Webサイトの開発者とブラウザの開発者の両方にとって、仕様を理解しやすくしています。
他のことは、このプロパティがHTMLに追加されたときは、いわゆる「ブラウザウォーズ」の途中だったということです。多くの機能が、競合するWebブラウザに追加されていました。急いで、正式な仕様の恩恵を受けませんでした。多くの機能が追加されました。
私はこれがこれらの機能の1つではないと信じています。disabled
フラグは、あなたがそれを停止して考えると完全に論理的です。しかし、ブラウザ開発者がもう少し前に協力していれば、より良い設計になった可能性は十分にある。
どんな場合でも、今日の状況は、これが私たちが持っているものです。 HTML仕様は進化しているかもしれませんが、このような既存の機能は今変更されません。
おそらく、しかしW3Cはそれをそのように行い、ここで不平を言うことはそれを変えないでしょう。 – alex