2012-02-08 7 views
1

私は特定のウィンドウをポップアップするために次のクラスを使用しますが、ユーザーが特定のURLを持つボタンとポップアップウィンドウをクリックして同じURLでボタンをもう一度クリックすると、同じクラスを使用する方法を尋ねます新しいウィンドウを開きたいのですが、まだ開いていれば同じウィンドウです。同じURLを持っていて、最後のウィンドウから開いている場合は、新しいウィンドウを開く代わりにウィンドウを復元するにはどうしたらいいですか?

public static void Redirect(string url, string target, string windowFeatures) 
     { 
      HttpContext context = HttpContext.Current; 
      if ((String.IsNullOrEmpty(target) || 

       target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && 

       String.IsNullOrEmpty(windowFeatures)) 
      { 
       context.Response.Redirect(url); 
      } 
      else 
      { 
       Page page = (Page)context.Handler; 

       if (page == null) 
       { 
        throw new InvalidOperationException("Cannot redirect to new window outside Page context."); 
       } 

       url = page.ResolveClientUrl(url); 
       string script; 
       if (!String.IsNullOrEmpty(windowFeatures)) 
       { 
        script = @"window.open(""{0}"", ""{1}"", ""{2}"");"; 
       } 
       else 
       { 
        script = @"window.open(""{0}"", ""{1}"");"; 
       } 
       script = String.Format(script, url, target, windowFeatures); 
       ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true); 
      } 
     } 

答えて

1

window.openメソッドの2番目の引数は、ターゲットウィンドウの名前です。両方の呼び出しで同じ値を使用すると、2番目の呼び出しはそのページを以前に開いたウィンドウに読み込みます。

window.open('./a.html', 'popup', ...); 
window.open('./b.html', 'popup', ...); 

b.htmlページが1つだけ表示されます。

+0

ResponseHelper.Redirect( "https://aaa.aa"、 "_blank"、 "scrollbars = yes、menubar = 900、width = 900、height = 800、resizable = 1"); ' –

+0

新しいウィンドウが毎回同じ 'url' –

+1

はい、' _blank'は常に新しいウィンドウを開く特別な名前です。あなたは何か別のものを使う必要があります(指定されたページ上の 'name'属性の値ではありません)。だからこそ私は 'popup'を打ちました。 –

関連する問題