Потеря состояния сеанса после закрытия окна, открытого с помощью window.open - PullRequest
1 голос
/ 24 марта 2009

В настоящее время мы открываем новую страницу aspx с помощью window.open. Window.open находится в функции javascript (openNewWindow ()) на текущей странице aspx, которая вызывается при нажатии элемента управления гиперссылкой asp.net.

Ссылки на странице динамически создаются нашей структурой, и поэтому я бы хотел избежать изменения этой функциональности.

Кажется, проблема в том, что когда это новое «дочернее» окно закрывается, состояние сеанса теряется. Я должен отметить, что сессия доступна в дочернем окне, но не в родительском, после закрытия дочернего окна.

Как ни странно, кажется, что в другом месте нашего приложения, если вызов open.window добавляется на страницу с помощью вызова ClientScriptManager.RegisterStartupScript для события clickbehind click элемента управления гиперссылки (а не вызова функции кодируется в сеансе aspx) сохраняется.

Последнее решение будет трудно реализовать в текущем коде структуры без значительных изменений и всех регрессионных испытаний, которые повлекут за собой.

У кого-нибудь есть идеи, как сохранить состояние сеанса после закрытия дочернего окна.

Кстати, это происходит в IE7, и наше приложение основано на asp.net 2.0.

Заранее благодарим за ваши проницательные и элегантные решения этой проблемы! ; О)

Ответы [ 3 ]

1 голос
/ 11 января 2010

IE 7 изменил поведение новых окон. По сути, каждое окно открывается в своем собственном процессе. Вкладки по-прежнему открываются в том же процессе.

Это означает, что каждое новое окно будет иметь свою собственную сумку для печенья. Это означает, что новое окно не имеет автоматически назначенного файла cookie Sesssion_ID. Элемент управления ссылкой .Net отправит файлы cookie в новое окно. Однако простое открытие нового окна с прямым javascript, вероятно, не сделает этого.

FireFox был таким образом некоторое время, и Chrome, я считаю, всегда был таким. IE 6 и предыдущее общее пространство процессов, даже для нескольких окон, поэтому все было разделено между двумя, что не вызвало головной боли при отладке сайтов строго в IE.

UPDATE
Вот ссылка , которая подробно описывает проблему. Вы заметите, что это поведение несколько противоречиво. Причина в том, что иногда IE 7 решает открыть новое окно в своем собственном процессе, а иногда он открывает его в новом.

Есть два реальных решения. Либо прекратите полностью полагаться на сессию (мой первый выбор, и у меня есть для этого серьезные технические причины), либо вам нужно переключиться на сессию без файлов cookie.

0 голосов
/ 24 августа 2018

Это случилось и в моем Chrome.

Я решил это, добавив:

<link rel="shortcut icon" href="../../img/favicon.ico">

в <head></head> на странице, которая будет открыта.

0 голосов
/ 25 марта 2009

Я должен исправить себя (извините, я не могу отредактировать исходный вопрос) и сказать, что элемент управления, запускающий JavaScript для выполнения 'window.open', является кнопкой ссылки, а не гиперссылкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...