Я хочу закрыть всплывающее окно со страницы ошибки. Процесс такой:
- Отправить форму
- При отправке формы просмотрите всплывающее окно, открытое
- Если после отправки формы выдается ошибка, просмотрите перенаправление страницы (не всплывающее окно) на страницу ошибки
В это время всплывающее окно должно закрыться.
Учитывая время открытия всплывающего окна и отправки формы, не существует простого способа подождать и посмотреть, будет ли выдана ошибка, а затем решить, открывать ли всплывающее окно или нет. Конкретная ошибка, против которой я программирую, появляется после открытия всплывающего окна, поэтому я считаю, что всплывающее окно должно быть закрыто со страницы ошибок. Шаги установлены на месте, поэтому я ищу решение для текущей архитектуры.
На странице ошибки я попытался вызвать функцию из того же файла сценария, который включает функцию, отвечающую за открытие всплывающего окна. Соответствующий код:
var PopupWnd = null;
function ShowPopup(){
PopupWnd = window.open('Popup.aspx','PopupWnd','');
}
function HidePopup(){
if(PopupWnd != null){
if(!PopupWnd.closed){
PopupWnd.close();
}
}
}
Разве из функции HidePopup () не должен ли объект PopupWnd быть равным нулю, если функция ShowPopup () была выполнена ранее? Связано ли это с проблемой определения масштаба или сроками событий? Как сделать так, чтобы значение объекта PopupWnd сохранялось, чтобы оно не равнялось нулю, когда я хочу закрыть всплывающее окно в функции HidePopup ()?
Спасибо за помощь.
ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ:
После подтверждения, что в именах нет коллизий, мне интересно, имеет ли значение, что я вызываю функцию HidePopup из события Page_Load моего кода за страницей ошибок aspx. Код:
string script = "<script>HidePopup();</script>";
ClientScript.RegisterClientScriptBlock(GetType(), "UploadErrorScript", script);
Для проверки работоспособности я ввел предупреждения, чтобы удостовериться, что функция HidePopup вызывается из моего codebehind и объект PopupWnd по-прежнему установлен равным нулю в этой функции.