2014-01-30 7 views
0

В ASP.net и C# - в моем событии pageLoad я нажимаю кнопку с кодом, написанным для получения ссылки SSO, а затем с помощью RegisterStartUpScript для добавления window.open со ссылкой на SSO в нем.После открытия всплывающего окна Как перенаправить родительскую страницу?

После того, как SSO откроется и загрузится, я хочу перенаправить страницу с событием pageLoad на другую страницу.

В приведенном ниже коде autoOpenSSO и redirectUser являются настройками, которые загружаются в пользовательский интерфейс администратора.

Проблема: Когда autoOpenSSO является истинным, и у меня установлен 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'); if (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()); 

     } 
    } 
Смежные вопросы