2011-06-24 4 views
3

私のアプリケーションでは、ウィンドウはpop1を開き、pop1はpop2を開き、pop2はpop3を開きました。私はpop3にいる。どのように私は/ポップアップがjqueryの中で、POP3の前に開かれたどのように多くのウィンドウを知っているか、JavaScript公開されているポップアップの数はどのようにしてわかりますか?

+4

'window.opener.opener.opener ...'オープナーがnullまたは未定義になるまで – levu

+0

@Richard J.ロスIII:関係は何ですか?これは良い質問です。 –

+2

多くのポップアップがある場合、私はあなたのサイトを避けています。しかし、興味深い質問をするため+1。 – Endophage

答えて

0

私は考えました。答えを探している人にとっては役に立つかもしれません。以下のコードcountでは、開くべきウィンドウの数を見つける答えが得られます。

popup = this;count=0; 
if(window.top != popup.self) 
{ 
count=count+1; 
popup = popup.parent; 
} 
1

と仮定:

  • 言葉ウィンドウ/ポップアップのご使用をお'modal dialogs'
  • を意味彼らはすべてが同じクラスを持っていますモーダルによってのみ使用されます。 は(私は私の例では.ui-dialogを使用します)
  • これは、現在開いているモーダルの量を与え、ないたどのように多くのをオープンしました。

var modalsCurrentlyOpen = $('.ui-dialog').length;

+0

私はwindow/popups ==モーダルダイアログを想定していません。つまり、 'window.open()'は、開いたウィンドウがモーダルダイアログであると仮定しません。 – mrk

+0

彼らはそれをjQueryにマークしました - 論理的なようです。さらに、 'window.open()'を使うことはとにかく悪い考えです。使いやすさはいいですね。 –

+0

@Leviはい。私はUIダイアログのみを使用しています。どのようにモーダルの量といくつの違いがありますか。この長さは、親ウィンドウについてではなく、そのウィンドウで開いたモーダルも返します。ありがとうございました。 – vishnu

0

あなたはおそらく、カウンタ変数を初期化して、いつでもwindow.openが実行され、それに1を追加することができます。 しかし、 a)開いているポップアップが閉じられたときに(おそらく隠されたフィールド値を使用して)アンロード時に親展ウィンドウを送信する必要があります: opener.document.your_form.counter.value ++; b)ユーザーがポップアップブロッカーを持っていても機能しない場合。

関連する問題