• ベストアンサー

<FORM TARGET="">で開く窓の大きさ指定

Javascriptかもしれませんが、perl内で使いたいので一応ここで‥‥ A.cgiからフォームに入力後送信、B.cgiに飛びます。 その時、B.cgiを新しく開いたウィンドウに表示したいので下記のようにしてます。 A.cgi側フォーム <FORM METHOD="post" ACTION="B.cgi" TARGET="_blank"></FORM> この_blankで新しい窓は開きますが、この開いた窓の大きさを指定するにはどうしたらいいんでしょうか? Javascriptはあまり良くわかりませんが、window.open()くらいなら使った事あります。これだと大きさも指定できますが、パラメーター(?)を渡しつつ、開いた窓の大きさも指定したいのです。 渡したいパラメーターは1種類(しかも変数で代入できる)なので、フォームじゃなくても <A HREF="B.cgi=?$i"></A>って格好でもいいです。($iの値は固定されていない) 何か私でもできる簡単な方法はありますか?

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

  • ベストアンサー
  • naoto0314
  • ベストアンサー率34% (25/73)
回答No.2

すみません。以下のままだと要望に応じることが出来ない状態でした。$iは何に変えてもOKです。 A.cgi 修正前 <INPUT type=hidden name=X value=500> <INPUT type=hidden name=Y value=500> 修正後 <INPUT type=hidden name=X value=$i> <INPUT type=hidden name=Y value=$i> 修正前 <FORM action=B.cgi> 修正後 <FORM METHOD="post" ACTION="B.cgi" TARGET="_blank">

Terari
質問者

お礼

回答ありがとうございます。 resizeも考えたのですが、resizeだと見る側の人が窓のサイズを変更できませんよね?それが少し不便かと。 しかし、hiddenでサイズの要素を送るなんて事考えてもみませんでした。何か少しヒントになった気がします。今後別の事にもいかせそうですしね。 ありがとうございました!

Terari
質問者

補足

今実験してみたら、見る側で窓の大きさ変更できました(^^; 何かと勘違いしてたようです。 これなら、標準的なブラウザに対応してるし使えそうですね! ありがとうございました。

その他の回答 (2)

noname#227796
noname#227796
回答No.3

window.openを使うなら2通り考えられます。 まず、上手くいかないブラウザがある方法。(^^; フォームのsubmitで <INPUT TYPE="submit" VALUE="送信" onClick="window.open('','hogehoge','width=200,height=200');"> として、ボタンが押された際のonclickイベントでウインドウを起動しておいて、そのウインドウめがけてフォームのアクションを飛ばしてやる方法。 "_blank"は予約されたターゲット(新しいウインドウを開く)であるため、うまくいかないので、まったく違う名前"hogehoge"などというターゲットに変更します。 また、タブブラウザや一部のブラウザでは上手くいかない可能性があります。 もう一つのやり方としては、アンカータグでやる方法。 2通りあります。 <script language="javascript"> <!-- function new_window(url,name,status) { window.open(url,name,status); return; } //--> </script> などという関数を作っておいてから、hrefで直接その関数を呼び出す方法。 <a href="javascript:new_window('a.html','hogehoge','width=200,height=200')">リンク</a> または、onclickイベントで呼び出す方法です。 <a href="#" onclick="new_window('a.html','hogehoge','width=200,height=200');return false;">リンク</a> onclickイベントの場合は、関数の方で「return;」となっている部分を「return false;」と書いておき、 <a href="#" onclick="return new_window('a.html','hogehoge','width=200,height=200');">リンク</a> と書くこともできます。

Terari
質問者

お礼

回答ありがとうございます。 returnの意味を調べてみたのですが、今いちよく理解できず‥‥戻り値??何が戻るの?ってな感じです(javascriptめ) で、別にonclickじゃなくてもいいので、直接hrefでやりました。 フォームに入力した値(複数)も渡したかったのですが、今回はよくわからないという事で、最低限渡したかった$iだけをwindow.open("B.cgi?$i" ,"~", "width=~,height=~") で渡してB.cgi側でフォーム入力してもらう事にしました。(それでも全然問題ない) window.openを使った事があるんだから、よくよく考えれば簡単だったんですよね(^^; 人に教えてもらって気付く‥‥ ありがとうございました!

  • naoto0314
  • ベストアンサー率34% (25/73)
回答No.1

FORMで使う場合はhidden要素でサイズを送信し、 受け取るCGIで <SCRIPT language="JavaScript"> <!-- resizeTo($X, $Y); //--> </SCRIPT> とJAVAスクリプトで指定してみてはいかがでしょうか? ---- A.cgi ---- <FORM action=B.cgi> <INPUT type=hidden name=X value=500> <INPUT type=hidden name=Y value=500> <INPUT type=submit value=送信> </FORM> ---- B.cgi ---- $X = $FORM{'X'}; $Y = $FORM{'Y'}; print <<"EOM"; <SCRIPT language="JavaScript"> <!-- resizeTo($X, $Y); //--> </SCRIPT> EOM ※動作未確認

関連するQ&A