Javascript関連情報

更新日:2002年08月08日

クロスブラウザを制する 2-31 親子ウインドウの確認

ウインドウ有無を確認するときに発生するブラウザ依存のバグを一括回避してくれるクロスブラウザ関数。[ update 2002/8/15 ]

[ update ] 2002/8/15 Gecko(Mozilla,N5,N7)がうまく動いていなかったので直しました









サブウインドウwin1が閉じていれば開き、閉じていなければ何もしない。


win_closed(window.サブウインドウ)
Win n3 n4 n6 n7 moz e4 e5 e6 o6 ,
Mac n3 n4 n6 n7 moz e4.5 e5 iCab,
Linux n3 n4 n6 n7 moz
親または子ウインドウの有無を確認するサンプルファンクションです。

<script language='JavaScript'>
<!--

  //--親または子ウインドウの有無確認関数    function win_closed(winVar) {    /* 子ウインドウから親ウインドウを調べたい場合は    win_closed(window.opener) と書いてください   Support: http://game.gr.jp/js-ml/samples/200102/openerTest.html   */      var ua = navigator.userAgent     if( !!winVar )         if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )              && ua.indexOf('Win')!=-1 )               return winVar.closed         else return typeof winVar.document  != 'object'     else return true   }

  //--サブウインドウを開く
  function openwin(targetName){
    win1 = window.open('',targetName
                     ,"top=0,left=0,width=200,height=300,resizable");
    //--サブウインドウ用HTML作成
    var subwinhtm="<form>"
                 +"  <input type='button' value='Close'"
                 +"         onclick='self.close()'>"
                 +"</form>"
      //--サブウインドウへ上記HTMLを書き出す
      win1.document.write(subwinhtm)
      win1.document.close()
      win1.focus()
  }

  
//-->
</script>
<form>
  <input type="button" 
         onclick="if(win_closed(window.win1))openwin('a')"
         value="サブウインドウオープン">
<br>サブウインドウwin1が閉じていれば開き、閉じていなければ何もしない。
</form>


* 緑文字が今回の関数
* 赤文字がこのスクリプトで最初に動作する部分
						
サブウインドウや親ウインドウが開いていないときにそれらを操作しようとした場合に発生するエラーを回避するために、普通はその存在を確認する「closed」が使われます。ところが、この実装がブラウザによってまちまちなため逆にエラーの原因となる場合が少なくありません。この関数は、ほんの数行の関数ですが、opener や closed をむき出しで使った時の、 Win版IE4や5のバグによるエラー発生やMac版IE4.5の実装違いによるエラーなどを大幅に減らすことが出来ます。 子ウインドウから親ウインドウを調べたい時は win_closed(window.opener) と書いてください。


シリーズ目次 |



  • 印刷する
  • ブックマークする
  • 携帯に送る
  • ブログに書く

あわせて読みたい

この記事の担当ガイド

写真

高橋 登史朗

Javascriptをはじめ、Ajax、jQueryの著書多数のガイドが、何かと最近騒がれているJa…

続きを読む

住まいには、人の個性がよく現れるもの。同じ空間をどのように使うかで、雰囲気も、快適さも大きく変わってくる。ここでは、「建築家と家を建てる」ガイド の川畑博哉氏が厳選した10軒を紹介し、建築家それぞれのこだわりのポイントを紹介しよう。建築のプロたちが考え出した、マネしたくなるアイデアが満載! さぁ、いますぐチェック!

人気Javascriptランキング

Powered by 価格.com

デジタル関連コミュニティ

北欧好きが、愛用の北欧モノを見せ合うコミュニティ

メルマガ登録

【デジタルメルマガ】オトナのオトコなら知っておきたい、PCやデジモノに関する情報をお届けします。

ショッピングカタログ

All About ウェブマガジン

女性向け

雨が楽しくなる!レイングッズ15

男性向け

マネしたくなるアイデア住宅

All About モバイル

QRコード

All Aboutがケータイで読める!

オススメ記事をメールでチェック

知識・経験を生かして、記事を書いてみませんか?