• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:教えて下さい!新規ウィンドウを開くプログラムについて)

教えて!新規ウィンドウを開くプログラムについて

このQ&Aのポイント
  • JavaScript初心者の質問。メインウィンドウの「Reference」という文字列をクリックすると新規ウィンドウが開き、別ページのフォームから入力したURLの内容が表示されるプログラムの仕様変更方法を教えてください。
  • ウィンドウを指定したサイズ、配置で開くようにしたいです。IEの場合はフォーカスがメインウィンドウに移っても常に手前に表示されるようにしたいです。試行錯誤しましたが解決方法が分かりません。
  • 使用言語はPerlです。$rutmpと$refMsgという変数を使用し、JavaScript内で新規ウィンドウを表示しています。

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

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.2

いえいえ^^; 白紙の件ですが、そこのスクリプトの矛盾点を見落としていました。 URLを指定してウィンドウを開いてるのでIE用もNN用も with(rpage.document){ open(); writeln("<html>"); writeln("<head><title></title></head>"); writeln("<body>"); writeln("</body>"); writeln("</html>\n"); close(); } この部分は不要です。 IEでshowModelessDialogを使うのであればIEの方はrpage.focus()も無くても良いかな?と思います。 showModelessDialogに関しては仕様だと思います。かなり昔にModalの方を使って以来使ってないのであまり覚えていませんが、一度開くとコンテンツの書換えは不可かもしれません。 ソフトのHelpシステムやFAQリストの様な形で使う物で、普通のブラウザ画面として使うのはちょっと使い方は違うかもしれませんね。

ko_kawauso
質問者

お礼

arexis様 昨日は回答ありがとうございました。 先程、アドバイス通りプログラムを書き換えてみたら、NNでもスムーズに表示されました! とても助かりました。 また何かありましたらどうぞよろしくお願い致します。

ko_kawauso
質問者

補足

arexis様 毎度お世話になります。 なるほど、URLを指定している場合は上記の部分は不要なのですね。 まだまだ勉強不足です^_^; 早速明日、職場で動作確認をしてみます。 showModelessDialogの件もご回答頂いてありがとうございますm(__)m 「常に前面にする」ことを優先して使ってしまいましたがブラウザ画面として使うには限界があるようですね。検討してみます。 毎回丁寧に答えて下さって本当に感謝しています。 ありがとうございます。

その他の回答 (1)

  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

これは稼動してるんですよね? >1)ウィンドウを指定したサイズ、配置で開くようにしたい。 >2)IEの場合はフォーカスがメインウィンドウに移っても常に手前に表示されるようにしたい。 1の『指定』はPerlスクリプト内で設定と言う事で良いですよね。 2に関してはIE用にshowModelessDialogを使ってるのでそのままで。 Perl内のDIV打ち出しは if($rutmp ne ""){ $ref .= "<div align=right><a href=\"javascript:rePreview(\'$rutmp\',400,250,580,400)\">$refMsg</a></div>"; } この数字部分は左から 幅、高さ、スクリーン上の上からの位置、スクリーン上の左からの位置 です。 JavaScriptの方は、ほとんど変えてません。 受け取った、4箇所の数値指定に引数をあててるだけです。 var rpage; function rePreview(url,W,H,T,L){ var ua = navigator.userAgent; if (ua.match(/MSIE (\d\.\d+)/)){ //IEの処理 rpage=showModelessDialog(url,window,"status:false;dialogWidth:" + W + "px;dialogHeight:"+H+"px;dialogTop:"+T+"px;dialogLeft:"+L+"px;scrollbars:yes;resizable:yes;"); with(rpage.document){ open(); writeln("<html>"); writeln("<head><title></title></head>"); writeln("<body>"); writeln("</body>"); writeln("</html>\n"); close(); } rpage.focus(); }else{ //その他ブラウザの処理 rpage =window.open(url, "referencePage","screenX="+L+",screenY="+T+",left="+L+",top="+T+",width="+W+",height="+H+",scrollbars=yes,resizable=yes"); with(rpage.document){ open(); writeln("<html>"); writeln("<head><title></title></head>"); writeln("<body>"); writeln("</body>"); writeln("</html>\n"); close(); } rpage.focus(); } }

ko_kawauso
質問者

お礼

arexis様 毎回ありがとうございます。 お返事遅くなりましてすみません。 質問の元プログラムは稼動中です。 アドバイス通り書き換えたところ、IEではスムーズに動きました。 ただ、IE以外の場合(NN7.1で確認しました)ウィンドウ枠は表示されるのですが中身が白紙の状態になっており、window.openのurlを認識していない状態です。 こちらの環境の問題でしょうか? 後、本題とは少しそれますがshowModelessDialogの場合、リンク先へ飛ぶと新規ウィンドウが表示されてしまいます。これを新規ウィンドウを作らない方法はないものでしょうか?そもそもこういう場所でshowModelessDialogを使うのが適切ではないのでしょうか? 面倒であれば後者の質問は無視して頂いて結構です。 よろしければ引き続きよろしくお願い致します。