Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: JavaScript でのフォーム送信に関しての質問
- From: "Yoshinori TAKESAKO" <yoshinori-takesako@xxxxxxxxx>
- Date: Wed, 12 Sep 2001 00:36:34 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 01978
- References: <20010911094147.8423.qmail@mx.it.to-be.co.jp> <003201c13ad6$127a45a0$540aa8c0@syc.co.jp>
竹迫です。
いくつか確認しておきたい点がありますので、補足いたします。
"Yoshinori TAKESAKO" <yoshinori-takesako@xxxxxxxxx> wrote:
> ----------------------------------------------------------------------
> Namazu に付属している NMZ.head* ファイルのテンプレートに書かれている
> HTMLによる検索ボタン(Search!) の記述が以下のようになっていますが、
>
> <input type="submit" name="submit" value="Search!">
> ↓
> <input type="submit" value="Search!">
>
> と変更したほうがよいのではないでしょうか?
> ----------------------------------------------------------------------
>
> 理由としては、
>
> 1. 今回のような JavaScript を用いたテンプレートのカスタマイズに関する
> 質問が FAQ になることを防ぐ意味合いと、
>
> 2. namazu.cgi が、押されたボタンによって処理を切り分けることをしない
> 限りは、<input type="submit" に name 属性をつけることが冗長である.
実際の namazu.cgi では、クエリー中の search 変数の値は無視するような
実装になっているので動作自体に問題はありませんが、Internet Explorer や
Netscape Navigator などのGUIブラウザで Search! ボタンを押して検索すると、
"search=Search%21" という冗長なクエリー文字列が namazu.cgi の引数に
追加されて、URL の見た目が悪くなってしまいます。
検索式の入力欄で、Enter(改行)キーを押した場合は、"search=Search%21"
というクエリー文字列は、namazu.cgi に渡りませんし、確か lynx では、
<input type="submit" の name 属性の値は、無視されたと思います。
そもそも namazu.cgi では、クエリー中の search 変数の値を無視している
のにもかかわらず、わざわざ <input type="submit" に name 属性を指定
している理由がわかりません。
W3C の規格書に書かれている例でも、<input type="submit" の name 属性
は省略されています。
http://www.w3.org/TR/html4/interact/forms.html#h-17.4.2
これについては、何か理由があるのでしょうか?
> 3. <input type="submit" の name 属性の値に JavaScript の予約語(?) で
> ある "submit" を使うのは適切ではない.
HTML4.01 Strict の DTD 上では、input タグの name 属性の値として
CDATA が入っていれば文法上問題ないと言えますが、
W3C DOM Level 2 では、HTMLFormElement の Method として、
void reset();
void submit();
が定義されています。
そして、HTMLFormElement階層下の HTMLInputElement の Property には、
attribute DOMString name;
が定義されているのですが、HTMLInputElement の属性値として
name="reset" や name="submit" を入れてしまうと、ECMA Script で、
HTMLElement.HTMLFormElement.submit ...
などと記述したときに、上で書いた submit が、HTMLFormElement の Method を
呼び出しているのか、HTMLInputElement の Property 名を参照しているのかが、
文法上の制約がないと判断できないケースがあります。
name="submit" 以外にも、name="name" や name="value" といった値を設定
してしまうと、似たような問題が生じる可能性があると思います。
> という主張です。
>
> ご意見がありましたら、よろしくお願いいたします。
特に反対意見がなければ、NMZ.head* ファイルの以下の記述を
<input type="submit" name="submit" value="Search!">
↓
<input type="submit" value="Search!">
のように変更しようと思いますが、何か問題がありますでしょうか?
--
広島市立大学 情報科学部 情報機械システム工学科 知能ロボット講座
竹迫 良範 <takesako@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>