ホームページ  >  記事  >  ウェブフロントエンド  >  関数 window.open はすべての子 windows_javascript スキルを閉じます

関数 window.open はすべての子 windows_javascript スキルを閉じます

WBOY
WBOYオリジナル
2016-05-16 15:47:331608ブラウズ

この記事では、window.open メソッドを使用してサブウィンドウを開く方法を紹介します。メイン ウィンドウを閉じると、すべてのサブウィンドウも閉じられます。以下は、私の実装アイデアとコードです。

実装のアイデア:
1. 子ウィンドウを開く関数 window.open(url,winName) の 2 番目のパラメーター winName は、開いているウィンドウを一意に識別できます。したがって、子ウィンドウを閉じるには、winName.close() 関数のみを使用する必要があります。
2. ページには複数のサブウィンドウがある場合があります。したがって、すべての子ウィンドウ オブジェクトを格納するには配列が必要です。閉じたら、配列を反復処理するだけです。
3. サブウィンドウでもサブウィンドウを開くことができます。ループは無限に続きます。したがって、判断が必要になります。
この要件は 2 つの方法で実現できます。

子ウィンドウの閉じる関数を呼び出します。
この方法はわかりやすいのですが、実際に実装してみるとブラウザの終了イベントが発生しないことが分かりました。また、サブウィンドウを再帰的に閉じるには、ボタンをクリックするかショートカットキーを使用して閉じる必要があります。
このメソッドは実装が簡単ですが、欠点は、サブウィンドウを格納するすべてのウィンドウ オブジェクト配列が同じ名前

を持つ必要があることです。

以下は、再帰を使用してサブウィンドウとサブウィンドウを閉じるサブウィンドウのメソッドです

function closeSonWindow(win){
  for(var index=0;index<win.length;index++){
    //如果窗口已关闭
    if(win[index].closed){
      continue;
    }
    //如果窗口没有可以打开的子窗口
    if(typeof(win[index].openedWindow)=="undefined"){
      win[index].close();
      continue;
    }
    if(win[index].openedWindow.length==0){
      win[index].close();
    }else{
      closeSonWindow(win[index].openedWindow);
      win[index].close();
    }
  }
}

以上がこの記事の全説明です。皆様のお役に立てれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。