• ベストアンサー

window.open を 遷移先のページで close する

現在のページ index.htm (仮) でページをオープンした 場合、 var win1 = window.open('', 'newWin', ''); post submit 等で次のページに移ってから、前ページ で開けた newWin を閉じるにはどうしたらいいのでしょうか。 win1.close(); とか newWin.close(); とかやっても ステータスバーに、三角のびっくりマークが出て うまく動かないようなのですが。

  • alx
  • お礼率97% (112/115)

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

  • ベストアンサー
回答No.1

画面をリフレッシュした場合、前の画面で作成したスクリプトの変数は、グローバル変数であっても保持されません。 対策としては、一度開いているポップアップがリフレッシュされてしまいますが、遷移先のonLoadイベントでもう一度、 var win1 = window.open('', 'newWin', ''); を行い、ウィンドウのオブジェクトを作成する必要があります。 そうすれば、クローズできると思います。 ただ、この方法も、適用できる場合と適用できない場合がありますが・・・

alx
質問者

お礼

ありがとうございます。 わかりにくい事言うから回答がつかないのかと思ってました。 後ほどやってみます。

alx
質問者

補足

おっしゃる通りできました。 丸1日悩んでいたのでうれしいです。ありがとうございました。

関連するQ&A

  • Fire FoxでWindow Closeを有効にする

    Fire FoxでJavaScript Close Windowが効かない・・・ ということで、以下ScriptをHead内に <script type="text/javascript"> function clsWin(){ window.opener = window; var win = window.open(location.href,"_self"); win.close(); } </script> を記入し、HTML内には <INPUT type="button" value="Close" onclick="close_win()"> と記入したのですが、 やはり反応がありません・・・。 どなたかご存知の方、教えてください!

  • window.open()について

    window.open("sample.htm","sample_win","") として開いたウィンドウを別のウィンドウから閉じるにはどのような方法がありますか? つまり、win1=window.open("sample.htm","sample_win","") のようにしないで開いたウィンドウを閉じる方法を教えてください。

  • IE7でのwindow.close後のwindow.openについて

    javascriptで、ボタンクリックでウィンドウを開くときに、同じ名前のウィンドウが既に開いていたら一回閉じで、開き直すというロジックを書いてます。 これはIE6では正常に動いているのですが、IE7になると、ウィンドウが閉じたまま、開き直さないで何も表示されなくなってしまいます。たまに開くときもあるのですが。 ボタンクリック後のコードを載せます。 ちゃんと開く方法はないでしょうか? function openwindow(){ var newWindow = window.open("test.html", "test"); if(newWindow.name == "test") { newWindow.close(); } oneScdWindow=window.open("test.html", "test"); }

  • FireFoxでJavascript「window.close()」が効きません。

    別ウィンドウを開いて「閉じる」ボタンをクリックするとウィドウを閉じる、というレイアウトを作成しているのですが、 <A HREF="javascript:window.close()">ウインドウを閉じる</A> では、firefoxでは動作しません。 情報を探してみて、以下のようなソースが有効なようなのですが、 <head>の中に以下を記述。 <script type="text/javascript" language="JavaScript"> <!-- function close_win(){ var nvua = navigator.userAgent; if(nvua.indexOf('MSIE') >= 0){ if(nvua.indexOf('MSIE 5.0') == -1) { top.opener = ''; } } else if(nvua.indexOf('Gecko') >= 0){ top.name = 'CLOSE_WINDOW'; wid = window.open('','CLOSE_WINDOW'); } top.close(); } --> </script> で、閉じるボタンを置きたい場所に <A HREF="javascript:close_win()">ウインドウを閉じる</A> が、ローカルで見ている範囲ですが、動作しません。 ページ内リンクみたいにページトップに戻るだけ。。。 ちなみにIEとネスケでは正常に動作しました。 どなたかお分かりになる方、ご教授願えませんか? 宜しくお願いします。

  • window.openについて

    window.openを使って新しいウインドウを開きたいと思い質問させていただきます。 現在、 ---------------------------------------------------------------- <script type="text/javascript"> <!-- function w_opn() { newWin = window.open("abc.html","","width=200,height=300"); win.moveTo(0,0); } // --> </script> そして、BODY内に <a href="javascript:w_opn()">開く</a> --------------------------------------------------------------- というふうに作成しています。 この方法だと、リンク元が複数ある場合、HEAD内のJavaScriptも複数記述しないといけないと思うのですが、これをひとつのJavaScriptで制御したいのです。 どなたかご教授願えませんか?参考になるサイトのURLでも構いません。

  • 『newWin』で、開くはずの頁が開きません。

    『newWin』で、開くはずの頁が開きません。 と言う事なのですが、いろいろと辞典やこの質問のコーナーを捜しましたが見つからないので質問します。 これは、CD-ROMで作ったものを見せるときに使いたいものです。 簡単なHTMLですけれど書きます。 何処がおかしいのでしょうか、教えて下さい。 <HTML> <HEAD> <TITLE>index</TITLE> <SCRIPT language="JavaScript"> <!-- function newWin(){ w = screen.availWidth ; h = screen.availHeight ; newWin1 = window.open("X.htm","newWin1","width="+w+",height="+h+");} //--> </SCRIPT> </HEAD> <booy onLoad="newWin()"> 内容 </body> </html> と、書きました。 これだと『X.htm』が自動で開くはずなのですが、なぜか開きません。 私には、分りません。 教えて下さい。御願いします。

  • Firefoxでwindow.close()が効きません

    Win、MacともIEでは問題ないのですが、Firefoxでwindow.close()が効きません。 Firefoxのバージョンは、Windows→1.0.7、Mac→1.5.0.1です。 ソースは以下のとおりです。 <form> <input type="button" name="Submit" value="ウィンドウを閉じる" onClick="javascript:window.close();"> </form> また、以下の方法も試してみたのですが動作しませんでした。 <SCRIPT language="JavaScript"> <!-- function CloseWin(){ window.close(); } // --> </SCRIPT> <FORM> <INPUT type="button" value="ウィンドウを閉じる" onClick="CloseWin()"> </FORM> aタグのターゲットブランクで別ウィンドウを開いた場合です。よろしくお願いいたします。

  • open.window(javascript) を使わないで、新規windowを3つ開く方法

    JavaScpript の open.window を使うと、値がGET で渡ってしまいます。 POST でデータを渡したいので、FORM で window を 3つ開く方法って ないでしょうか? <FORM method=POST name=form1 target="window1" ACTION="/cgi-bin/search1.pl"> <input type="text" name="searchword1"> </form> <FORM method=POST name=form1 target="window2" ACTION="/cgi-bin/search2.pl"> <input type="text" name="searchword2"> </form> <FORM method=POST name=form1 target="window3" ACTION="/cgi-bin/search3.pl"> <input type="text" name="searchword3"> </form> の 3 つのフォームを 1 つの <input type="submit" name="Search" value=" 検索 "> で起動させるってことです。 (または、open.windows で値を渡すとき、POST で渡したい) よろしくお願いします。

    • ベストアンサー
    • CGI
  • window.open()のNNとIEの動作の違い

    ブラウザのツールバーやメニューバーを非表示にしたいと思っています。 w = window.open("index.html","_self","status=1,resizable=1"); ある画面(ウィンドウAとする)があるとして、その画面内のボタンをクリックすると上記のスクリプトを実行し、ウィンドウAのツールバーやステータスバーを非表示したいと考えています。 これをネットスケープで実行すると、問題なくツールバーやステータスバーは非表示となりますが、IEで実行すると非表示になりません。ためしに、open()の第二引数を"_blank"にすると、ツールバーなどが非表示になった子ウィンドウが開きます。 どうしてもIEでウィンドウAのツールバーなどを消したかったので、こんなことも試してみました。 ウィンドウAのclickイベント内に、open()の第二引数を"_blank"とし子画面を開く処理を書き、子画面を開くopen()の直後にウィンドウAを閉じるためのwindow.closeを書きます。これで対処できると思いましたが、実行すると「ウィンドウは、表示中のWebページにより閉じられようとしています。このウィンドウを閉じますか?」という確認メッセージが表示されるので実用的な対処策にはなりませんでした。。。 IEでは自分自身のウィンドウに対してツールバーやステータスバーを非表示にするってことはできないのでしょうか?

  • window.open とtarget属性について

    お疲れ様です。 いつもお世話になっています。 以前 http://okwave.jp/qa4125614.html で質問させていただいた件に関することなのですが、 現状のソース function chk(){ var k=0; var i; for(i=0;i<6;i++){ if(document.form1.elements[i].value ==''){ k++; } } if(k == 0 || k==3 || k==6){ window.open('','nWin','width=640,height=320'); }else{ alert('エラーですよ'); } } ---------- <form onsubmit="chk();" name="form1" target="nWin" action="xxx.php" method="post"> <input type="text">が6こ <input type="submit"> </form> で、今フォームの中のnullの数によって、window.openを実行させるかさせないかの実装をしています。 正常フローでwindow.openは発動するのですが、target属性がformに入っているおかげで、エラーでもwindowが新しく開いてしまいます。 targetを消せば、エラーの際はwindowは開きませんが、正常フローの際、windowは開きますが、値がわたりません(親windowに表示されてしまう) あちらをたてればこちらがたたず状態です。 正常フローのときは 子windowが開く 子windowに値がわたり、子windowに表示される エラーのときは 子windowは開かない 親windowにエラーメッセージを表示させる(とりあえずalertでよい) という切り替えをうまくするにはtarget属性をなんとかする以外ないと思うのですが、どうすればうまくいくのか頭を抱えている状態です。 恐れ入りますが、よい案があれば教えていただきたいです。 よろしくお願いします。