Namazu-users-ja(旧)


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

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



竹迫です。

寺西さん、早速のお返事ありがとうございます。

"Tadamasa Teranishi" <yw3t-trns@xxxxxxxxxxxxxxx> wrote:
> Yoshinori TAKESAKO wrote:
> > →まず、最初に DOCTYPE 宣言がありません。
> > 実際の現場で HTML4.01 Strict に準拠することが難しい場合でも、
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> > として、一度 HTML 文法チェッカにかけてみることをお勧めします。
> 
> ちなみに Navigator(Mozilla)用のDOCTYPEはありません。

あっ、それを言ってしまうと Iinternet Explorer用の DOCTYPE や
NTT DoCoMo iモード用の DOCTYPE もないことになってしまいますね。:-)

From: "Tadamasa Teranishi" <yw3t-trns@xxxxxxxxxxxxxxx>
Date: Wednesday, September 12, 2001 3:31 AM
> > が、確かに DOCTYPE は、書いた方がよいでしょう。
> > となると、HTML 4.01 Transitional が良いかどうかはともかく、
> > 特定の記述に統一した方が良いでしょうね。
> > 
> > これは、ヘッダのテンプレートだけに限った話ではなくなりますが。
> 
> これは、とりあえず、DOCTYPE だけ書いておこうというのではなく、
> やるなら、きちんと書き直しましょうと、いう話です。
> 
> 中途半端に DOCTYPE を書いて、悪影響がないとは言い切れないからです。

確かに仰る通りです。

今回の例では、JavaScript 以前の HTML の文法ミスが目立っていたので、
「HTMLの文法チェッカにかければ基本的なミスは防げますよ」というスタンスで
文法チェッカのための DOCTYPE 宣言の一例を挙げてしまいました。

実際にどの DOCTYPE を宣言すべきなのかは、
ページ作成者が自ら考えて選択するのが本来の姿だと思います。

# ただ、DOCTYPE に関しては、ブラウザの実装上は無視されることが多いので、
# あまり突き詰め過ぎると、宗教的なお話になってしまうことも否めません。

"Tadamasa Teranishi" <yw3t-trns@xxxxxxxxxxxxxxx> wrote:
> > > <input type="submit" name="submit" value="Search!">
> > 
> > →寺西さんや佐久間さんも指摘されていますが、name 属性値に "submit" が
> > 入っているのは、まずいと思います。
> > 
> > 自分でカスタマイズするときは、これも含めて変更するのが前提ですが、
> > 今回の場合は Namazu に付属している NMZ.head* のテンプレートの記述が
> > デフォルトでそのようになっているので、秋月さんだけに非があるとは
> > 言えないのはないかと思います。
> 
> が、name 属性に "submit" を指定してはいけないとはなっていないはずです。

なるほど、HTML の規格上はそうだと言えますね。

> もちろん、余計なトラブルを避けるために別の名前を指定する方が、
> 適切ではありますが...。

規格に沿ったつもりの製品を作っても、何かしらトラブルが起きるというのは、
規格自体が不完全なのか、規格書が言及していない事柄があるのだと思います。

それでもきちんとした製品を作ってしまうのが、開発者のノウハウでもあった
りする訳ですが、世の中でやってはいけないことを法律で完全に列挙するのは
難しいのと同じ様に、規格の中でやってはいけないことをすべて列挙すること
は、やはり難しいのだと思います。

実際に、JavaScript と連動させたフォームを HTML で作る場合は、
input タグ中の name 属性が、特定の条件下で unique であるとか、
文法上の曖昧さが残るときは JavaScript の予約語(?) を使用する
のを避ける等といったような制約が生じるということです。

> > From: "Tadamasa Teranishi" <yw3t-trns@xxxxxxxxxxxxxxx>
> > Sent: Tuesday, September 11, 2001 7:34 PM
> > > <input type="submit" name="submit1" value="Search!">
> > 
> > という変更をした場合、namazu.cgi は submit1 というクエリー変数の
> > 入力を想定していないので、Web サーバの error_log に、
> > 
> > namazu: unknown cgi var: submit1=Search!
> > 
> > というエラーメッセージが、検索時に出力されることがありますので、
> > ご注意ください。
> 
> ということは、submit というクエリー変数の入力は想定されている
> ということですね?

そうですね。namazu.cgi では、

static void 
process_cgi_var_submit(char *value, struct cgiarg *ca)
{
    /* Do nothing; */
}

のダミーの関数が src/cgi.c に定義されていて、クエリー文字列中に
"submit" 変数が入力されていると呼び出されるようになっています。

backward compatibility のために、この関数は残しておく必要は
ありますが、ちょっと冗長のような気がするのは仕方ありませんね。

--
  広島市立大学 情報科学部 情報機械システム工学科 知能ロボット講座
     竹迫 良範 <takesako@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>