A要素をJavascriptでフックする。

HTMLのA要素で開いたウィンドウに対してJavaScriptで制御できない。
そこで以下のスクリプトを作ってみた、だけど別窓なんて今時ほとんど使わねぇよなー。ちなみに動作確認したのはIEだけです。

  //windowUtilのwindow保持変数
  var windowUtil_Windows=new Array();
  
  /**
   * windowをa要素の属性を元に開きます。
   * 
   * 使用するときは以下のようにしようします。
   * クリックされた際にa要素のtarget属性、href属性を読み取ってウィンドウを開きます。
   * <a href="aaa" target="bbb" onclick="return windowUtilOpen(this)">ccc</a>
   * 
   * TODO target属性が_blankなどは2次元配列で管理するといいかもしれない。
   */
  function windowUtilOpen( targetAnchor ){
    var href=targetAnchor.href;
    var target=targetAnchor.target;
    var win;
    
    win = window.open(href, target);
    win.focus();
    windowUtil_Windows[target]=win;
    
    return false;
  }
  
  /**
   * windowUtilで開いたウィンドウを閉じます。
   */
  function windowUtilClose(){
    for (target in windowUtil_Windows) {
      var win = windowUtil_Windows[target];
      if(!win.closed){
        win.close();
      }
    }
  }

使い方はこんな感じ、リンクでウィンドウを開いている時に、元のウィンドウを閉じると他も閉じる。

<body unload="windowUtilClose()">
<a href="http://www.google.com" target="google" onclick="return windowUtilOpen(this)">google</a><br>
<a href="http://www.yahoo.com" target="yahoo" onclick="return windowUtilOpen(this)">yahoo</a><br>
</body>