- ベストアンサー
CGIの中にJAVA Script
CGIプログラムはまったくの初心者です。 perlでCGIプログラムを組んで、HTMLを書き出すときに Java Scriptもいっしょに書き出すことはできますか? print "Content-type: text/html\n\n"; print "<html><head><title>$title</title>\n"; ---この間に入れたいのですが・・・--- print "</head>\n"; print "<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=$bg_color text=$text_color link=$link_color vlink=$vlink_color background=$bg_gif>\n"; Java Scriptの menu_0.addMenuItem("ショップ案内","location='shop.html'"); 等を入れるときに 「"」や「;」はどういう風に表現すればうまくいくのでしょうか。 Java Script以外のタグの中の<font size="2">などは「"」をとれば 大丈夫なのは知っていますが、Java Scriptで「"」や「;」をとってしまうと 動作しなくなりました。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
大体ながながとHTMLやJavaScriptを記述するときには、『ヒアドキュメント』という機能を使うと話しが簡単だと思います。 print << "THE_JAVASCRIPT" ← ここは適当に名前をつけます。 <script language="javascript"><!-- ここは、かきたいようにjavascript書けば良いです。 $titleなどの変数はちゃんと展開されます。 //--></script> THE_JAVASCRIPT ← ここはコロンをつけてちゃダメ♪ Perlの書籍やインターネットなどで、『ヒアドキュメント』を調べましょう!
その他の回答 (3)
- leaz024
- ベストアンサー率75% (398/526)
通常はkokucho81さんの言う通り、ヒアドキュメントを使うことをおすすめします。 またヒアドキュメントは行数がかさむので、1行のprint文内で処理したい場合は、makihiroさんのように「\」を直前につけて「"」をエスケープする(単なる文字として認識させる)ようにします。 ただこの方法は文字列が見にくくなる為、ミスの元になることが多いので、qqを使って print qq{<BODY onLoad="OnLoad()">}; などのようにした方がよいでしょう。 (qqの区切り文字は{}でなくてもよいのですが、HTMLやJavaScriptでは絶対使わない文字を指定するようにすると、バグ予防になります。) それからHTMLタグ内でも、"は省略しない方がいいですよ。value値がスペース交じりの文字列の場合や、値に指定した変数がヌルだった場合などに、予期しない動作をすることがあります。
お礼
遅くなりましたがありがとうございました。 print qq{<BODY onLoad="OnLoad()">}; ・・・なんて方法もあるんですね。 いろいろと参考にさせていただきました。
- makihiro
- ベストアンサー率37% (29/78)
"の前に\を付けて\"のようにすれば大丈夫ですよ。 私もこの作業をよく見落としてinternal server errorになっちゃいます(^^;
お礼
遅くなりましたがありがとうございました。 しかし、かなりの量のテキストだったら大変ですね。
- kokucho81
- ベストアンサー率61% (157/255)
はうぁ!! print << "THE_JAVASCRIPT"; ここはセミコロンいります。
お礼
遅くなりましたがありがとうございました。 その方法で解決しました。