アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaScriptの動作不安定につき、ご教示ください。
<a href="aaa.cgi">あああ</a>からCGI (perlで記述、サーバーはApache) を
呼び出し、JavaScriptを含む下記のようなhtmlを返しています。

<html><head>
<script language="JavaScript"><!--
function first() {
window.alert("注意書き");
document.forms[0].elements[0].focus();
}
//--></script></head>
<body onLoad="first()">
<form><input type="text">

IE5/Win&Mac及びNN4.7/Winで「あああ」をクリックすると、設計どおり
注意書きが表示され、警告窓を閉じるとテキストボックスにカーソルが来ています。
ところが、NN4.7/Macで「あああ」をクリックすると、目的ページが一瞬表示
された後に消え、すぐ再描画され、警告窓もカーソルも出ません。この状態でも、
ソースを見ると上記スクリプトは書出されおり、submitすればform送信に支障は
ありません。また、ブラウザボタンで「再読込み」するか「戻る > あああ」で
点滅・再描画の現象なく再表示され、警告窓とカーソルも設計どおりです。

思い当たる原因があるでしょうか? 解消法はあるのでしょうか?
要領を得ない状況説明で恐縮ですが、追加説明は補足要求でご指示くださいませ。

A 回答 (1件)

form配列、elements配列が、name指定されていないフォームを参照しようとしております。


NN4.0以降ではname属性を定義していないと正しく動作しません。
form配列、elements配列の指定方法をご存知ですか?
<form name="fm">
<input type="text" name="inp" value="1">
<input type="text" name="inp" value="2">
</form>

nameに同じ属性値が設定されていますのでelements配列として扱う事ができるわけです。
document.forms[0].elements[i].value

他の解決法としてフォーム名、フォーム部品名を明示的に指定することになるかとおもいます。
<form name="fm">
<input type="text" name="inp1" value="1">
<input type="text" name="inp2" value="2">
</form>
document.fm.inp1.value
document.fm.inp2.value

この回答への補足

ご指摘の理由とすると、CGIの問題ではなく、JavaScriptの問題ですね。
form を引用しない window.alert() も影響を受けてしまうのでしょうか?
名前を付けるのが面倒だったので、forms[0]とかにしていたのですが、
name="xxx"を付加して結果を報告します。(2~3日かかるかもしれません)

補足日時:2002/04/01 23:10
    • good
    • 0
この回答へのお礼

残念ながら、forms[0]、elements[0]のname指定の効果は実証できて
いません。別に思いついたことがあったので、関連してお尋ねしよう
と思ったのですが、nonameさんになっていたので、別途JavaScriptで
質問を立ち上げました。q=247205

お礼日時:2002/04/04 23:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!