半自作cgiで画像を表示させる方法

このQ&Aのポイント
  • 半自作cgiで画像を表示させる方法について教えてください。
  • クリックさせずに最初に開いたウインドウを自動的に閉じる方法を知りたいです。
  • また、画像表示ウインドウのサイズを指定することは可能でしょうか。
回答を見る
  • ベストアンサー

半自作cgiが思うように動作しません。

HTMLページから、$Dataというファイル名を持って来て、 このcgiで、$Data.jpgとなり、 その画像を、新しいウインドウ(サイズ指定)で表示させたいのです。。。 このcgiで新しくウインドウを開き、何かしらをクリックさせてから、サイズ指定のウインドウで画像を表示させるのはできるのですが、 クリックさせずに、しかも、最初に開いたウインドウは勝手に閉じさせたいのですが、 どこをどう直せばいいのでしょうか? #! /usr/bin/perl print "Content-type: text/html\n\n"; $Data = $ENV{'QUERY_STRING'}; $tail = ".jpg"; &header; print "<SCRIPT LANGUAGE='JavaScript'>\n"; print "function newwindow(imgurl) {\n"; print "nwin = window.open('img/$Data$tail\', 'Newwindow','width=300,height=210');\n"; print "nwin.document.open();\n"; print "nwin.document.write(\"<html><head>\")\; \n"; print "nwin.document.write(\"</head><body><img src=\"img/$Data$tail\'>\")\;\n"; print "nwin.document.write(\"<br><INPUT type='BUTTON' value='CLOSE' onclick='window.close()'>\")\; \n"; print "nwin.document.write(\"</body></html>\"); \n"; print "nwin.document.close()\;\n"; print "return false;\n"; print "}\n"; print "</SCRIPT>\n"; print "<BODY onload='window.close()'></body></html>\n"; sub header { print <<"EOM"; <html> <head> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <title>$Data</title> </head> EOM }

  • CGI
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

Javascriptで 子WINDOWを自動的にクローズすることができます。 http://www.usagi-js.com/sample/jssample2zoku.htm サンプル80 参照。

Hiro-PaPa
質問者

お礼

ありがとうございました。 お陰様で出来上がったのですが、 Googleのポップアップブロックによって、表示されなくなってしまいました。 よって、今回は使いませんでした。 でも、本当に勉強になりました。ありがとうございました。

関連するQ&A

  • CGI内でのjavaによるWindowopen

    CGIを作成中です。 やっているのは更新記録を改造して、商品入荷情報にしようとしています。日付、商品名、説明と共に画像を載せるようにしています。 その画像の開き方ですが、うまい方法は無いでしょうか? 今のところ単に<a><img>タグを使ってサムネイルをクリックするとこで原寸表示させるようにしています。 ただ、これだと、前のウインドウサイズに左右されてしまうし、ツールバーなども表示されるためスマートではありません。 で、Javaを使って画像クリックで指定サイズ小窓を開くようにしようと考えました。 ただ、どのようにしたら良いかが全然わからずです。 今のところわかっているのは画像クリックで別窓を開かせる方法 ------------------------------ print "<SCRIPT LANGUAGE='JavaScript'>\n"; print "function newwindow() {\n"; print "nwin = window.open('', 'Newwindow','width=300,height=210');\n"; print "nwin.document.open();\n"; print "nwin.document.write(\"<html><head>\"); \n"; ~~ print "nwin.document.write(\"</body></html>\"); \n"; print "nwin.document.close();\n"; print "return false;\n"; print "}\n"; print "</SCRIPT>\n"; ------------------------------ と、 <A HREF=\"dummy.html\" onClick=\"return newwindow()\"><img~~> の組み合わせで画像クリックで別窓が開くということだけです。 これをどのように改造したら良いのでしょうか? 単純に、 小窓に$imgを仕込み、 <A HREF=\"dummy.html\" onClick=\"return newwindow($img)\"><img src="$img">じゃダメでしょうか? 初心者なので変な事いってるかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Java
  • CGIが動作しません。

    最近、Perlを初めたのですが、 CGIがうまく動作しません。 他のCGIは動作しているので CGIは動作する環境だと思います。 http://からフルパスでCGIを実行しても、 以下のエラーがでます。 -------------------------------------  500 InInternalServerError  サーバーエラーです。  以下の理由が考えられます。  パーミッション等の設定が  間違っている可能性があります。  サイト管理者にお問い合わせ下さい。 ------------------------------------- ちなみに以下のような簡単なCGIも同様です。 ===================================== #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=x-sjis>\n"; print "<title>StartCGI</title></head>\n"; print "<body>\n"; print "<p align=center><font size=4>初めて書いたCGI</font></p>\n"; print "</body></html>\n"; exit; =====================================  なぜなんでしょう。 困ってます。 ご教授の程、宜しくお願い致します。

    • ベストアンサー
    • CGI
  • CGIにJAVAの記述をしたい

    CGIプログラムの中にJAVAの記述をしたいのですが うまくいきません。 ヒアドキュメントでくくってみましたが 500エラーで表示されませんでした。 どう記述すれば動いてくれるんでしょうか? print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n"; print "<link rel=\"stylesheet\" type=\"text/css\" href=\"$loaddir/style.css\">\n"; print "<title>$title</title>\n"; ここに下記のJAVA文を入れたいです。 print "</head>\n"; 記入したいJAVA <SCRIPT language="JavaScript"> <!-- document.write('<img src="momo/123.cgi?' + 'javaref=' + document.referrer + '" width=1 height=1>'); // --> </SCRIPT>

    • 締切済み
    • CGI
  • 「 <!--#exec cgi="***.cgi" --> 」が表示されません

    「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。 こんな感じ ------------main.cgi------------ #!/usr/local/bin/perl print "Content-type:text/html\n\n"; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <略> </body> </html> EOM __END__ -------------------------------- それで、ほかのHTMLファイルに <!--#exec cgi="main.cgi" --> と入力してそのページを見てみると、 [an error occurred while processing this directive] 上の文章が表示されていました。 どうすれば「main.cgi」の内容を表示することができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlでCGIプログラムを書いて画像が出ない

    CGIプログラムで画像を指定すると、ぺけのマークこそ出ないものの、肝心な絵が出ません。画像は同じディレクトリに置いてあります。 #!/usr/local/bin/perl $data = "146"; @list = split(//,$data); print "Content-type:text/html\n\n"; print <<EOF; <html> <head> <title>アクセスカウンターの表示だけ</title> </head> <body> <font size="4">あなたは</font> <img scr="img/$list[0].gif"> <img scr="$list[1].gif"> <img scr="$list[2].gif"> <font size="4">番目のお客様です</font> </body> </html> EOF exit; といった感じです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 返信記事付きログファイルの表示

    以下のような掲示板のログファイルがあります。 2<>2への返信記事2つ目<><> 1<>1への返信記事4つ目<><> 1<>1への返信記事3つ目<><> 2<>2への返信記事<><> 1<>1への返信記事2つ目<><> 1<>1への返信記事<><> 2<>親記事<>2.jpg<> 1<>親記事<>1.jpg<> 親記事もレス記事も同じログファイルに下から投稿順に記録されていきます。 親記事には必ず画像が付きます。 これを表示するだけの、ごく単純なCGIを作っているのですが、親記事も返信記事も独立して表示されてしまいます。 #!/usr/local/bin/perl require './jcode.pl'; $log = "./log.txt"; $title = 'test'; print "Content-type: text/html; charset=euc-jp\n\n"; print <<EOM; <html> <head> <title>$title</title> </head> <body> EOM open(OUT,"$log"); @DATA = <OUT>; close(OUT); foreach(@DATA){ ($num,$body,$img) = split(/<>/,$_); if($img ne ""){ $img = "<p><img src=\"$img\"></p>"; } print <<EOM; <h1>$num</h1> <p>$body</p> $img <p>$res</p><hr> EOM } どうすれば親記事番号と返信記事番号を関連付けて、$bodyを$resに出来るのでしょうか?

    • ベストアンサー
    • Perl
  • 変数を送る方法?(CGIの「**.cgi?mode=00&name=aa.jpg」的な物)

    1ページに複数の画像があり、画像クリックで拡大写真を小窓で開くようにしたいです。 枚数分ページ(htmlファイル)を準備するのは避けたいです。自動生成の方でやりたいと思います。 その際、少しでも入力を減らしたいと思うのですが… 現在は以下のようになっています。 --- <SCRIPT language="JavaScript"> <!-- function wopen1(){ wo1=window.open("","WindowOpen1", "width=800,height=700"); wo1.document.write("<html><head><title>画像名</title>"); wo1.document.write("<script language='JavaScript'>"); wo1.document.write("function good(){"); wo1.document.write("window.close() }"); wo1.document.write("</script>\n</head>\n<body>"); wo1.document.write("写真名-コメント"); wo1.document.write("<IMG src='写真パス'>"); wo1.document.write("<center>"); wo1.document.write("<form>"); wo1.document.write("<input type='button' name= 'ok ' value=' Close ' onClick='good()'>"); wo1.document.write("</form>"); wo1.document.write("</center>\n</body>\n</html>"); wo1.document.close(); } (これが写真枚数分) これと、 <A href="javascript:void(0)" onclick="wopen1()"><IMG src="サムネイルパス"~ これの組み合わせです。 これを、 wo1.document.write("<html><head><title>[CGIで言う所の$name的な表現]</title>"); と <A href="javascript:void(0)" onclick="wopen1([CGIで言う所の?name=00&pict=01.jpg的な表現])"><IMG src="写真サムネイルパス"~ で済ませたいのですが、可能でしょうか? その場合、どのように記述したらいいのでしょうか? 出来ればピンポイントで教えていただけるとありがたいのですが… よろしくお願いします。

  • 連続するecho関数の手間を省く方法

    現在、PHPとCGIを平行して勉強しているのですが、 CGIは printf EOM<< ~ EOM<< のような形で関数1つだけで~の内容を出力できるのに、同様にPHPでやるとエラーになります。 こんな感じです。。。 <?php print EOM<< Content-Type:text/html\n\n; <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>ハロー!PHP!!</TITLE> </HEAD> <BODY> ハロー!PHP!! </BODY> </HTML> EOM<< ?>

    • ベストアンサー
    • PHP
  • cgi出力での文字コードについて

    下記のソースをsjisで作っていて、出力するdata.txtをuft-8で保存したいです。 どのようにすればよいでしょうか? 下記ソースでは、data.txtはsjisになっています。 尚、htmlはsjisなのでそのまま使用したいです。 どなたか教えてください。 宜しくお願いします。 ############################# #!/usr/local/bin/perl require 'jcode.pl'; require 'cgi-lib.pl'; &ReadParse; $datafile='data.txt'; ←これの保存のみutf-8にしたい open(FH,">$datafile"); print FH "$in{'name'}"; close(FH); rint "Content-type:text/html\n\n"; print "<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>"; print "<html><head></head><title>テスト</title><body>\n"; print "<center>入力完了しました。</center><hr /><br>\n"; print "<b>名前:</b>$in{'name'}<br>\n"; print "<hr />\n"; print "</body></html>";

    • 締切済み
    • CGI
  • cgiのopenについて

    cgiのopenを使って下記のソースを作りました。 が、読み込んだテキストの一行目しか読み込みませんToT require 'cgi-lib.pl'; &ReadParse(*answer); $data = "$answer{'text'}"; require 'jcode.pl'; &jcode'convert(*data,'sjis'); open(dataright,"<data.txt"); $data= <dataright>; close(dataright); print "Content-type:text/html\n\n"; print <<EOF; <html> <head> <title>メール送信フォーム</title> </head> <body> ------------------<br> お知らせ<br> $data ------------------<br> </body> </html> EOF exit; ちなみにテキストは改行に<br>を入力してあります。 ぜひアドバイスをお願いいたします。

    • ベストアンサー
    • CGI