不正なHTMLコメント
ウイルスバスターに関して問い合わせたいことがあったのですが、即返答が欲しかったのでメールは却下、電話も繋がりにくそうなので、チャットを選択。
まずは入口のページ(trendmicro.ehosts.net
)にアクセスし、各種項目を入力して「送信」。
- チャットの営業時間内(9時30分〜17時30分)にアクセスしないとフォームは現れないようです。
が、何も起きない。ソースを見ると送信ボタンが type="button"
で、JavaScriptを使っている…。仕方がないのでJavaScriptを有効にして再度試してみるが、それでも反応なし。
原因を調べるため、ブラウザをFirefoxに変えてアクセスしてみると、姓を入力する部分をはじめとして、全体的に表示がおかしい。
ソースを見ると、211行目にこんな記述が。
<!-- --------------------------------------------------Start of Off Hours Page By: VhaL------------------------------------------------------------------------------------ -->
これは駄目ですね。
SGMLの規定では、区切り子COM("--")およびそれに囲まれたSGML文字が「注釈」とされており、次のような解釈ができます。
Start of Off Hours Page By: VhaL
という文字列は不正な位置にある。(この文字列の前に26個のCOMが存在する)Start of Off Hours Page By: VhaL
の文字列の後ろには43個のCOMが存在する。奇数個であることから、末尾の>
や、その下の行に続く文字列やマークもコメント扱いになる。
また、HTML4.01の仕様書にはそもそもコメントの中には連続したハイフンを入れるべきではないと書かれています。
結局、流れとしては次のようになっているようです。
- 送信ボタンを押下すると、JavaScriptが有効な環境では
checkFormFields
関数が実行される。 checkFormFields
関数の中でvar TimeCounter = document.counter.d2.value;
と、IDがcounter
なものを呼び出している。<form name="counter" ID="counter" >
というフォームがあるのだが、これは例の不正コメントの直下にあり、コメント扱いになっているので、呼び出せずエラーになる。
…なんとなくですが、ひょっとしていまどきIEでしかチェックをしていないのでしょうか。
HTMLの仕様を理解していないエンジニアは掃いて捨てるほど居ますが、たとえ注釈宣言のルールを知らなくても、テスト段階で複数のブラウザで試してみれば「何かおかしい」ということに気づきそうなものですが…。
なお、こういう時こそ(?)IEの出番なわけでして、IE7で試してみたところ、予想どおり入ることができました。が、次の瞬間、
……退出!
もう2度とチャットはしない。