にしし ふぁくとりー:西村文宏 個人サイト

No.10845 - 今日のひとことログ

更新

■LOG No.10845

にししふぁくとりーHOMEに掲載している「今日のひとこと」の過去ログ(掲載履歴)です。 RSS

No.10845 〔997文字〕

HTMLのform要素には、データの送信先を示すためのaction属性がある。このaction属性の値を action="" のように空文字列にした場合、ブラウザは「いま表示しているプログラムそのもの」へ情報を送る動作になる。この仕様は、「自分自身がどんなファイル名で実行されているのか?」をいちいち調べなくても済むので便利だ。問題は、HTML5よりも前(=HTML4やXHTML)まではこの書き方が許されていたが、HTML5以降(Living Standardも含む)では許されず、action属性自体を省略しなければならない仕様になっている点である。文法的に許されていなくても、ブラウザは問題なく従来通りの動作をしてくれるのでそんなに不都合はないのだけども。要するに、自分自身にフォームデータを送信したい場合、
  • HTML5未満:<form action="" method="post"> ←action属性値は空文字列
  • HTML5以降:<form method="post"> ←action属性自体を省略
となる。なんでHTML5以降では action="" の書き方をダメという仕様に変えてしまったのだろうか? 「空文字列が指定されていれば属性を省略したのと同じ」という扱いにしても、特に不都合はなさそうな気がするのだが。実際、ブラウザはそのように動作しているわけだし。
どうもaction属性を省略すると、どこにもデータを送ってくれなさそうなイメージがしてしまって据わりが悪い。HTML5やLiving Standardで書いている場合に <form action="" method="post"> のように書いても、別にエラーになるわけではなく、ブラウザは従来と同様の動作をしてくれるので、特に問題はないが。ただ、JavaScriptでフォームを操作したい場合にはブラウザによっては問題が出るという解説を目撃したことはある気がする。たしかに、HTMLだけならわりとテキトーでも不都合がない場合は多いだろうけども、JavaScriptの方は文法に忠実でないと困るケースが多々ありそうなので、JavaScriptは文法に厳密に従ってエラーはエラーにするという解釈になっていてもおかしくなさそうな気はする。(詳しくは調べていないので、何がどう問題になるのかは把握していない。)
2023年9月
12
3456789
10111213141516
17181920212223
24252627282930
2023年10月
1234567
891011121314
15161718192021
22232425262728
293031
2023年11月
1234
567891011
12131415161718
19202122232425
2627282930

Powered by てがろぐ Ver 4.5.0

--- 当サイト内を検索 ---