2014-01-30 129 views
0

在ASP.net和C#中 - 在我的pageLoad事件中,我單擊了一個按鈕,該按鈕已寫入代碼以獲取SSO鏈接,然後使用RegisterStartUpScript添加一個window.open以及其中的SSO鏈接。打開彈出窗口後,如何重定向父頁面?

在SSO打開並加載之後,我想將帶有pageLoad事件的頁面重定向到另一個頁面。

在下面的代碼中,autoOpenSSO和redirectUser是在管理UI中加載的設置。

問題:當autoOpenSSO爲true並且我將redirectUser設置爲false時,彈出窗口打開時沒有問題,但是當我將重定向設置爲true時,彈出窗口不打開,頁面重定向回我的重定向地址。

我想打開彈出窗口並將頁面重定向回我的重定向頁面,但覺得我錯過了一些東西,並沒有任何運氣搜索。

我的代碼:

protected void Page_Load(object sender, EventArgs e) 
    {   
     if (autoOpenSSO == true) 
     { 
      ccdetails_Click(this, null); 
     } 


    if (redirectUser == true) 
     {    
     Response.Redirect(redirectAddress);    
     } 


    } 

    protected void ccdetails_Click(object sender, EventArgs e) 
    { 
     ClientScriptManager cs = Page.ClientScript; 
     try 
     { 
      string link = getSSOlink(ah1.InstitutionUserID, cardnumber).Trim(); 
      string s = "window.open('" + link + "','_blank', 'width=980,height=600,resizable=yes');"; 
      cs.RegisterStartupScript(this.GetType(), "PopupScript", s, true); 

     } 

     catch (Exception se) 
     { 
      LogSystem.LogInfo(se.ToString()); 

     } 
    } 

任何想法表示讚賞。

+0

您需要爲彈出窗口添加一個EventListener。 – Botonomous

+0

感謝關鍵字@Anon。我嘗試添加var popupWindow = window.open(''+ link +'','_ blank','width = 980,height = 600,resizable = yes');如果(popupWindow){popupWindow.onload = function(){window.location.replace(''+ redirectAddress +'')};},但是因爲它是跨域的,我不認爲我的JS可以得到這個函數當window.onLoad會觸發。我正在考慮設置一個超時來解決它。 – David

+0

那麼,爲了我的需要,我只是確定我不需要聽衆或任何東西。我剛剛在啓動腳本中添加了重定向語言,而不是在C#中。如果需要,我將創建一個添加腳本的設置,如果沒有,它將保留在頁面上,而不是重定向。我稍後會添加代碼。 – David

回答

0

我只需要將另一行js添加到我的註冊啓動腳本中,該腳本可以重定向到我想要的頁面。修改後的代碼可以在下面找到。我的頁面上有一些設置,可以讓我決定是否要在SSO打開後自動打開SSO並自動重定向用戶,這是s = s + t部分的用途。

protected void Page_Load(object sender, EventArgs e) 
    {   

     if (autoOpenSSO == true) 
     { 
      ccdetails_Click(this, null); 
     } 

    } 

    protected void ccdetails_Click(object sender, EventArgs e) 
    { 
     ClientScriptManager cs = Page.ClientScript; 
     try 
     {     
      string link = getSSOlink(ah1.InstitutionUserID, cardnumber).Trim(); 
      string s = "var popupWindow = window.open('" + link + "','_blank', 'width=980,height=600,resizable=yes');"; 
      string t = "window.location.replace('" + redirectAddress + "')"; 
      if (redirectUser == true) 
      { 
       s = s + t; 
      } 
      cs.RegisterStartupScript(this.GetType(), "PopupScript", s, true); 

     } 

     catch (Exception se) 
     { 
      LogSystem.LogInfo("Access issue - " + se.ToString()); 

     } 
    } 
相關問題