[Top] [CGI研究室]
JavaScriptの使用

CGIでJavaScriptを使用する場合について

  1. JavaScriptとは?
    JavaScriptは、HTMLデータ内にプログラムを直接記述し、 Webブラウザ上で動的な表示変更等の処理を行なう事ができるスクリプト言語です。
    ※WebブラウザがJavaScript未対応であったり、JavaScriptを無効にしてあったり すると、JavaScriptのプログラムは動作しません。

    JavaScriptのプログラムはSCRIPTタグ(<SCRIPT>〜</SCRIPT>) 内に記述します。
    また、JavaScriptが動作しないブラウザの為に、NOSCRIPTタグ(<NOSCRIPT>〜</NOSCRIPT>) といものが用意されており、JavaScriptが動作しないブラウザだけがNOSCRIPTタグ内に記述された内容(HTMLタグや文字列等)を表示します。

  2. CGIでJavaScriptを使用する場合とは?
    どの様な場合にCGIでJavaScriptを使用するのかを以下に示します。


  3. Webブラウザやプラットフォームの種類による違い
    ユーザー側のWebブラウザの種類/バージョンやプラットフォーム(マシン、OS) の種類(Windows、MAC、その他)によってはJavaScriptで使える命令が異なる場合があります。
    そのためJavaScriptを使用する場合には、まず最初にCGIへアクセスしているユーザー側の Webブラウザとプラットフォームの種類を判別しておく必要があります。
    ※Webブラウザやプラットフォームの種類に依存しそうにない JavaScriptの命令を使用する場合であっても実際の動作が異なる場合があり、予めWebブラウザ とプラットフォームの種類を判別しておけば、問題が発生した場合に対処がしやすくなります。

    Webブラウザとプラットフォームの判別方法については 『Webブラウザとプラットフォームの判別』 を参照してください。

    Webブラウザとプラットフォームを判別し、JavaScriptを使用して良いかどうか、 また、使用したいJavaScriptの命令が使えるか否かを判断します。

  4. JavaScriptの有効/無効
    Webブラウザを判別してJavaScriptに対応している事がわかったとしても、Webブラウザの設定で JavaScriptを無効にしてある場合は、JavaScriptが動作しません。
    CGIにアクセスされたときにWebブラウザのJavaScriptの有効/無効の判断が行なえれば良いのですが、 残念ながらCGIにアクセスされただけではJavaScriptの有効/無効を判断する事ができません。

    これに対処するためには、以下に示す2つの方法があります。

    1. JavaScript有効時の処理と無効時の処理を両方記述する
      ごく一般的な方法です。
      JavaScriptのプログラムをSCRIPTタグ内に記述し、 JavaScriptが無効だった場合のHTMLタグ等をNOSCRIPTタグ内に記述します。
      欠点
       ・前述の「同一パターンの繰り返しをたくさん表示する場合」には使用できません。
       ・IE等ではJavaScript使用時にダイアログで有効/無効を選択するという設定があり、 この設定にするとJavaScript使用時に必ず毎回ダイアログ選択が必要となります。

    2. 一度だけSCRIPTタグとNOSCRIPTタグでJavaScriptの有効/無効を判断する
      一度だけSCRIPTタグとNOSCRIPTタグによってJavaScriptの有効/無効を判断し、 それ以降はJavaScriptの有効/無効状態を連携する様にします。
      欠点
       ・最低1回はJavaScriptの有効/無効を判断しなければならない為、 CGIが出力する一番最初の画面でJavaScriptを使用したい場合は、 JavaScript有効時の処理と無効時の処理を両方記述する必要があります。
       ・途中でJacvaScriptの有効/無効を変更された場合に対処できません。


    Aの方法に関しては特に技術的な説明は不要と思われるため、 Bの方法に関してのみ、次で説明を行ないます。

  5. JavaScriptの有効/無効判断と連携
    JavaScriptの有効/無効状態が不明な場合は、画面内のフォームにJavaScriptの有効/無効を 判断する為のタグを挿入し、 JavaScriptの有効/無効状態がわかっている場合は、画面内のフォームにJavaScriptの有効/無効状態を 連携する為のタグを挿入します。

    例)
    if ( $FORM{'jsmode'} eq '' )
    {
    	$jscheck = "<script language=\"JavaScript\">\n"
    		 . "<!--\n"
    		 . "document.write('<input type=\"hidden\" name=\"jsmode\" value=\"1\">');\n"
    		 . "// -->\n"
    		 . "</script>\n"
    		 . "<noscript>\n"
    		 . "<input type=\"hidden\" name=\"jsmode\" value=\"0\">\n"
    		 . "</noscript>\n" ;
    }
    else
    {
    	$jscheck = "<input type=\"hidden\" name=\"jsmode\" value=\"$FORM{'jsmode'}\">\n" ;
    }
    
    	・
    	・
    	・
    
    print "<form method=\"post\" action=\"〜.cgi\">\n" ;
    print $jscheck ;
    	・
    	・
    	・
    print "<input type=\"submit\" value=\"Send\">\n" ;
    print "</form>\n" ;
    


CGI Saloon