Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
初めてのCGI
CGI 研究室
ダイナミックCGI
ダウンロード
サービス
サーバ構築(Windows)
データベースアクセス
有料サービス
FAQ
お問い合わせ
このページを印刷
DynamicCGIとは
  DynamicCGIとは
現在、インターネットに「ダイナミックCGI」等という言葉はありません。 ここで紹介するダイナミックCGIとは、CGIにスタイルシートと、JavaScriptを生成させて、 今まで不可能だった機能をCGIに実現しようというもので、当サイトが勝手に付けた名称です。 このサンプルをご覧いただければ今までのCGIとの違いは歴然です。 洗練されたデザインだけでなく、 CGIだけでもスタイルシートだけでもJavaScriptだけでも不可能な事が3つの統合で可能になっています。 HTMLでなく、CGIでダイナミックHTMLを生成する事で、 ブラウザの違いをCGIが吸収してほとんどのブラウザから使用できるようになります。
  DynamicHTML
従来のHTMLでは単にドキュメントを表示する物で、 動きの有るページを作成するにはせいぜいアニメーション画像を使用したり、 動画を使用する程度でした。 確かに動きは有るのですが、これでは訪問者の要求に答えるインタラクティブ(双方向性)なページとは呼べません。 それに対してCGIは、訪問者の要求に答えて必要とされているページを表示することができますので、 インタラクティブといえます。 当サイトは、これまでCGIでHTMLを生成するスクリプトを紹介してきましたが、CGIはサーバで動作する為、 要求に答える為には一度サーバに要求を伝えなければなりません。 ダイナミックHTMLは、HTMLにスタイルシートを使用してタグをオブジェクトとしてJavaScriptで操作可能にした物です。 ダイナミックHTMLはユーザのブラウザ上で動作しますので、サーバにリクエストを送信する必要がありません。
【DynamicHTMLで出来る事】
  • ブラウザを更新せずにフォントの大きさや色を変更できます。
  • 文字や画像を動かすことができます。
  • 動的に画像や、既に表示されているドキュメントを変更できます。
  • ポップアップウィンドウが作成できます。
  • 部分的に表示、非表示を指定できます。
  • フォームの状態を設定したり、参照できます

【DynamicHTMLの弱点】
  • 極端に古いブラウザや、一般的でないブラウザでは動作しない。
  • 新しいブラウザでも、訪問者がユーザ設定でJavaを制限していると動作しない。
  • ダウンロードしたデータをクライアントで実行させる為、クライアントの性能に左右される

DynamicHTML自体は、MicrosoftInternetExplorer4、NetscapeNavigator4からサポートされていたのですが、 両者の考え方が全く違い、ほとんど互換性が有りませんでした。 互換性がないということはブラウザ毎に実行コードを複数用意しておく必要があり全く普及しませんでした。 そのうち、NetscapeがDynamicHTMLのサポートから撤退した為、さらに利用価値がなくなり、 単純なJavaScriptは使用してもページ全体がDynamicHTMLでできているページも見かけなくなりました。 今回、当サイトがDynamicHTMLのCGIを作成しようとしたのは、Netscape7の登場で、 ほぼMicrosoftInternetExplorer6の機能を持ったことにあります。 本コーナーは、Netscape7、MicrosoftInternetExplorer6以降のブラウザで動作する事を前提に解説しています。 1つしか紹介していないコードは、両ブラウザで動作し、 が付いているコードはNetscape専用、 はIE専用です。 CGIから使用する場合は、ブラウザを取得し、必要なJavaコードを出力する事で、両ブラウザに対応させます。 実行可能なサンプルが有る場合は、次のように記述してボタンを付けています。
<p>
<div id="layer1" style="DISPLAY: none;Z-INDEX: 1;POSITION:absolute;LEFT:150;TOP:80;" class="close">
<table border="1" bgcolor="#DDFFEE"><tr><td>
これがレイヤーです。<br>
いつでも表示、非表示を切り替える事ができます。
</td></tr></table>
</div>
<p><input type="button" id="button1" value="表示" onclick="show();"></p>
<script Language=javascript>
  //-->
  function show() {
    var objID=document.getElementById('layer1');
    var buttonID=document.getElementById('button1');
    if(objID.className=='close') {
      objID.style.display='block';
      objID.className='open';
      buttonID.value='非表示';
    }else{
      objID.style.display='none';
      objID.className='close';
      buttonID.value='表示';
    }
  }
  //-->
</script>
<p>

Copyright 2004 Terra. All rights reserved. No reproduction or republication without written