HKE

[JavaScript] 子ウィンドウを開く最大数を指定し、ウィンドウを使いまわす

ヘッダ内に以下を記述。もしくは外部ファイルで用意し、ヘッダ内で読み込む。

<SCRIPT LANGUAGE="JavaScript">
<!--
  // ------ ページロード時の初期処理
  function setValue(){
    maxWinNo = 5;
    winNo = 0;
    subWin = new Array();
  }

  // ------ サブウィンドウを開く処理
  function openWindow(){
    windowCount = 0;
    if( winNo > 0 ){
      for( i = 0; i < winNo; i++ ){
        if( ! subWin[i].closed ) windowCount++;
      }
    }

    if( windowCount == 0 || winNo >= maxWinNo ) winNo = 0;

    winWidth = screen.width / maxWinNo;
    winLeft = ( winWidth * ( winNo + 1 ) ) - winWidth;
    if( winLeft + winWidth > screen.width ){
      winLeft = screen.width - winWidth;
    }

    subWin[winNo] = window.open( "",
                                 "Child" + winNo,
                                 "width=" + winWidth +
                                 ", height=" + ( screen.height - 30 ) +
                                 ", left=" + winLeft +
                                 ", top=0, scrollbars=no" +
                                 ", location=no, alwaysRaised=yes" );
    var subWinHtml = "<HTML><HEAD><TITLE>Child</TITLE></HEAD>\n"
                   + "<BODY TEXT=White BGCOLOR=Black>\n"
                   + "<TABLE BORDER=0 WIDTH='100%' HEIGHT='100%'><TR>\n"
                   + "  <TD ALIGN=center VALIGN=middle>Child<BR><BR>\n"
                   + "    Window Width: " + winWidth + "<BR>\n"
                   + "    Window Left : " + winLeft  + "<BR>\n"
                   + "    Screen Width: " + screen.width + "\n"
                   + "  </TD></TR></TABLE>\n"
                   + "</BODY></HTML>\n"
    subWin[winNo].document.write( subWinHtml );
    subWin[winNo].document.close();
    subWin[winNo].focus();
    winNo++;
  }

  // ------ 親ウィンドウを閉じるときの後処理
  function closeWindow(){
    for( i = 0; i < winNo; i++ ){
      if( ! subWin[i].closed ) subWin[i].close();
    }
  }
//-->
</SCRIPT>

BODYタグに、ページを読み込んだときと、ページを閉じるときの処理を入れる。

<BODY onLoad="setValue()" onUnload="closeWindow()">

最後に、子ウィンドウを開くためのアクションを入れる。

<INPUT TYPE="button" NAME="btnWinOpen" VALUE="表示" onClick="openWindow()">


フォームに入力中、特に日本語を入力した後に文字を確定しようとしたら、英数字入力モードになっていることに気付かずに、そのままSubmit(送信)されてしまった、な...
評価用に作ってみた、リロードを一時停止する処理。METAタグを使ったリロードよりも画面がチカチカするので、これ自体は不採用になったけど、状況によっては使えるかも...
スポンサーリンク

この記事をシェア

アカウントをフォロー