- ベストアンサー
確認ページが表示できない
- フォームと確認ページの表示に問題があります。どこが原因か確認する方法を教えてください。
- フォームと確認ページの表示に問題があります。どの部分が原因か調べて教えてください。
- フォームと確認ページの表示に問題があります。具体的にどこを確認すればいいですか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私もCGIの補助機能としてJavaScriptを少し使う程度でそんなに詳しくはないのですが、 質問に回答したいと思います。 >1)action="kakunin.cgi"があるのになぜonClickで再度kakunin.cgiを指定する必要 >があるのですか ”kakunin.cgi”の中のJavaScriptでopenerというのを使っていますが、このopenerは、 親ウィンドウのことを示しています。 質問者さんの方法だと、親ウィンドウがないため「window.opener.documentはnullまた はオブジェクトではありません」という警告が出たのだと思います。 親ウィンドウはopenというメソッドによって子ウィンドウを生成することができます。 生成された子ウィンドウは、openerによって親ウィンドウを参照することができます。 したがって、openerを使うのであれば、下記のようにopenメソッドによって子ウィンド ウを生成する必要があるという理由です。 onClick="window.open('kakunin.cgi');return false;" >2)フォームをクリックすると、「ウインドウは表示中のwebページにより閉じられよ >うとしています------」の表示がでます>が、これが表示しないようにするにはどう >すればよいですか 下記のようにすれば、警告なしで閉じるようにはならないでしょうか? <input type="submit" value="確認" onClick="window.opener='main';window.open('kakunin.cgi');return false;"> ”kakunin.cgi”に関してですが、フォームは質問者さんが書いたままで(onClickを書 かない)、通常はJavaScriptは使わずに以下のよう書きます。 use CGI; my $q = new CGI; my $email = $q->param('mail'); print<<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>確認</title> </head> <body> <form name="kuser" action="soushin.cgi" method="post"> <input TYPE="text" NAME="kmail" value =$email> <p> <input name="button" type="submit" value="送信"> </p></form> </body> </html> END JavaScriptは通常、内容確認で補助的に使ったりします。 例えば、質問者さんのフォームのHTMLでは以下のようにして、内容確認ダイアログを 出したりします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フォーム</title> <script type="text/javascript"> <!-- function confirm_submit(message, form) { if(confirm(message)) { form.submit() } } //--> </script> </head> <body> <form name="user" action="kakunin.cgi" onSubmit="confirm_submit('メールは「' + document.all.user.mail.value + '」でよろしいですか?', this);return false;" method="post"> <p>メール <input name="mail" type="text" value="" size="30"> <input type="submit" value="確認"> <input type="reset"" value="リセット"> </form> </td> <td width="148"> </td> </tr> </table> </body> </html>
その他の回答 (3)
- ryu_chan
- ベストアンサー率37% (69/186)
JavaScriptソースの隠蔽のことを言っているのでしょうか? 残念ながら私はしたことがないのでわからないです。 「JavaScript 難読」や「JavaScript 圧縮」で検索するとお望みのものが引っ かかるかもしれません。 JavaScriptの質問ページがあるのでそこで質問されてみるといいと思います。
- ryu_chan
- ベストアンサー率37% (69/186)
No.2の回答での最後のJavaScriptによる内容確認ダイアログですが、簡潔に以下よう にも書けますね。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フォーム</title> </head> <body> <form name="user" action="kakunin.cgi" onSubmit="return confirm('メールは「' + this.mail.value + '」でよろしいですか?')" method="post"> <p>メール <input name="mail" type="text" value="" size="30"> <input type="submit" value="確認"> <input type="reset"" value="リセット"> </form> </td> <td width="148"> </td> </tr> </table> </body> </html>
- ryu_chan
- ベストアンサー率37% (69/186)
フォームの<input>を以下のように変えたら、所望の結果は得られないでしょうか? <input type="submit"" value="確認"> ↓ ↓ ↓ <input type="submit"" value="確認" onClick="window.open('kakunin.cgi');return false;">
お礼
ありがとうございました。表示できました。 ところで質問ですが 1)action="kakunin.cgi"があるのになぜonClickで再度kakunin.cgiを指定する必要があるのですか 2)フォームをクリックすると、「ウインドウは表示中のwebページにより閉じられようとしています------」の表示がでますが、これが表示しないようにするにはどうすればよいですか よろしく
お礼
いろいろと教えていただき感謝しています。言われたことを1つづつ吟味しながら覚えていきます。 最後に質問ですが、このようなプログラムは、ソースを見れば他人に分かってしまうのですが、他人が分らない方法はないのですか。たまにソースを見ると文字化けのようなものもありますがこれはよい方法と思いますが、どのようにするのか分りません。よろしく