Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: JavaScript でのフォーム送信に関しての質問



竹迫です。

いくつか確認しておきたい点がありますので、補足いたします。

"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>