• ベストアンサー

Perl内でJavaScriptを利用したいのですが、その設置方法を教えてください。

onChangeで関数内の処理(メニュー項目を変更する関数です)を実行したいと考えています。 JavaScriptの関数定義を記述する事が出来るのでしょうか。 また、出来る場合はその記述方法を教えてください。 HTMLでJavaScriptを利用するときと同様に、<HEAD></HEAD>に print<<EOM; <SCRIPT language="JavaScript"> <!--  関数 // --> </SCRIPT> EOM 関数を記述し、動いてほしいところに <SELECT NAME="「フォーム名」" onChange="「関数()」">と メソッドを記述したらいいのでしょうか。 が、いまカスタマイズかけているものは、HTMLのヘッダーが一括表示となっています。こういう場合でも、同じように<HEAD>内に記述していいのですか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

CGI(Perl)はサーバーで動作しています。 JavaScriptは、クライアント(ブラウザ)で動作します。 なので、以下のようにPerlで出力しても、 print<<EOM; <SCRIPT language="JavaScript"> <!--  関数 // --> </SCRIPT> EOM Perlとしては文字通り「Print」しているだけで、関数を定義しているとか動作させるといったことは行われていません。(HTMLの出力だろうと、JavaScriptの出力だろうとPerl的にはなにも意味を持たない。) この出力結果をクライアントで受け取った際に、関数として定義されて動作させることはできます。 >いまカスタマイズかけているものは、HTMLのヘッダーが一括表示となっています。こういう場合でも、同じように<HEAD>内に記述していいのですか? このへんのおっしゃる事がよく分かりませんが、結論として、 「PerlでJavaScriptの関数を出力してブラウザで動作させる」 ということはできます。boriさんが書いてある方法でOKです。 「JavaScriptからPerlの関数をCallする」 といったことはできません。

bori
質問者

お礼

早速ありがとうございました。 「PerlでJavaScriptの関数を出力してブラウザで動作させる」 ということはできます。boriさんが書いてある方法でOKです。 のことばに自信をもってチャレンジしたら動きました。V(^0^) ただ、 本来<HEAD></HEAD>におくべき関数をメソッドの直前においたら 動きました。

その他の回答 (1)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

サーバーサイドと、クライアントサイドの違いを理解して下さい。 まず、boriさんの方法では「クライアントサイドの」JavaScriptから「サーバーサイドの」Perlの関数を使用することはできません。 どうしても使用したのであれば、 JavaScriptのonChangeでlocation.href=でPerlにパラメータを渡し、 Perl側でパラメータによってJavaScriptを生成してあげると良いでしょう。 参考まで

bori
質問者

お礼

質問の仕方があいまいだったようですいません。 でも、別の方法というか「クライアントサイドの」JavaScriptから「サーバーサイドの」Perlの関数を使用する方法をアドバイスしてくださってありがとうございました。勉強になりました。m(._.)m ペコッ