2013-08-07 4 views
3

У меня есть страница в asp.net под названием Home.aspx. Он использует MasterPage и также есть кнопка, которая звонит:Window.Open() изменяет страницу Макет в Internet Explorer

Response.Write("<script> window.open('page2.aspx','_blank'); </script>") 

Результат: новая вкладка открыта с page2.aspx и если вы вернетесь к Home.aspx, макет страницы изменяется, центральный <div> перемещается влево от страницы.

Что я могу сделать для решения этой проблемы? Помните, что это происходит только в Internet Explorer, Firefox работает нормально!

Большое спасибо.

ответ

1

Не вдаваясь в заслугу о том, почему вы это делаете, ваш Response.Write, вероятно, убивает вывод HTML/CSS/JS на странице Home.aspx и предотвращает его правильную загрузку. Попробуйте использовать:

ScriptManager.RegisterStartupScript(typeof(Page), 
      "OpenPage2", "window.open('page2.aspx','_blank');", true); 

Вместо этого Response.Write, так как только при загрузке страницы будет открыть окно.

+0

Спасибо @ F.Aquino, я проверю и вернусь с результатом !! –

1

Как правило, если вы хотите написать сценарии из кода позади ScriptManager, это твой друг. Сценарии запуска происходят после prerender, выгрузка скриптов происходит при закрытии, и вы можете установить их на основе таких событий, как изменение размера.

То, что ваши перемещения div связаны с поворотом страницы, а не с кодом сервера конкретной кнопки. Использование

<script language="javascript" type="text/javascript"> 
     function mybutton() { 
      window.open('page2.aspx', '_blank'); 
      return false; 
     } 
    </script> 

с OnClientClick = «MyButton» в вашей кнопки осины тег позволяет избежать постбэк в данном случае. Помимо этого у вас может быть неправильный код css или код, который срабатывает при повороте страницы, который по-прежнему будет перемещать ваш div сразу после отправки.

1

В случае, если кто-то будет полезен, вот точный ответ, который работал для меня:

http://www.schnieds.com/2008/06/css-lost-on-postback-in-aspnet.html

Таким образом, в случае ОП, вместо

Response.Write("<script> window.open('page2.aspx','_blank'); </script>") 

, что будет работать :

 String myScript = "<script> window.open('page2.aspx','_blank'); </script>"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript", myScript); 
Смежные вопросы