Perlの中で別ウインドウを開くには?

[上に] [前に] [次に]
ふにゃちん 1999/11/26(金) 11:58:13
cgi(perl)の中で、

print "Content-type: text/html;CHARSET=xxxx\n\n";
 :
 :

とすると、実行中のブラウザウインドウにHTMLを表示しますが、これを別ウインドウに表示するように出来ないでしょうか?

(^_-) 1999/11/26(金) 13:18:47
新しいウインドウをJSで開いて、対象をそのCGIにすればいいんでないの?
間違ってたらスマンす。
(JS使わないと多分むりだと思う)

ふじ 1999/11/26(金) 14:14:11
呼び出す時に

<FORM action="hogehoge.cgi" target="another_window">
または
<A href="hogehoge.cgi" target="another_window">

みたいに、targetを指定してやれば別ウィンドウで開きます。
#サイズ指定とかをしたければ JavaScript が必要ですけど。

ふにゃちん 1999/11/26(金) 16:12:06
ちなみにやろうとしているのは、

<FORM ACTION="hoge.cgi">
として、通常の結果はそのウインドウに出力し、エラーの場合だけ別ウインドウに出力したいと思っています。

というわけで、申し訳ないっすが「ふじ」さんの案は使えません…。

ふじ 1999/11/26(金) 16:46:19
NNならば(Windows版 3.01, 4.6 で確認)
エラーが起きたときに,

Content-Type: text/html
Window-Target: error

こんな風なヘッダを出せば、別ウィンドウを開けるようです。
#IEでは駄目みたい。

あとは、CGI が出力する HTML に
・別窓を開いてエラーメッセージを表示
・一つ前に戻る
という動作をする JavaScript を仕込むとか。

ふにゃちん 1999/11/26(金) 17:07:00
print "Content-type: text/html;Window-Target: error;CHARSET=x-sjis\n\n";
print "<HTML>n";
:
:
 としましたが、別ウインドウにはならずに、同じウインドウへの表示となりました。
 ちなみに、「エラー」と言ったのは、あくまでもPerlの結果の上での話であって、Perl文法がエラーという意味ではありませんので・・・。

ふじ 1999/11/26(金) 17:12:50
>print "Content-type: text/html;Window-Target: error;CHARSET=x-sjis\n\n";
ではなくて、
print "Content-type: text/html;CHARSET=x-sjis\nWindow-Target: error\n";

又は(見やすく書けば)

print <<END;
Content-type: text/html;CHARSET=x-sjis
Window-Target: error

END

こうね。
Content-Type ヘッダと、Window-Target ヘッダを出す、ということ
なので。

ふにゃちん 1999/11/26(金) 17:14:38
失礼しました。
たった今、ふじさんの書いた方法でやりなおしたところでした。

でも、やっぱりIEではだめですね

ふじ 1999/11/26(金) 17:37:51
だったら JavaScript しかないかなあ・・・

<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
w = open("", "w");
w.document.open();
w.document.write("エラーだよ");
w.document.close();
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="history.back()">
勝手に戻るぞ。
</SCRIPT>
</BODY>
</HTML>

エラー時にはこんなのを出力すれば、別窓にエラーメッセージを出して、
元の Window は一つ前に戻りますけど。

非対応ブラウザ(+JavaScript 切ってる人)の為に、
上の「勝手に戻るぞ。」の部分にもエラーメッセージを出して、
更に「バックボタンで戻って下さい」というような
メッセージを書いておくと良いでしょう。

ふにゃちん 1999/11/26(金) 18:00:31
[[解決]]
うぉぉ、すごい。
今、実行して感動してしまいました。
ありがとうございました。>ふじさん

タダで答えてくれるなんて、まったく!
わたしも早く皆様のお役に立つようにならねば!

[上に] [前に] [次に]