Я сделал маленькое всплывающее окно календаря на Javascript. Очень просто, используя элемент управления Calendar из ASP.NET. Я вызываю всплывающее окно с помощью showModalDialog. В модальном окне изменение текущего месяца календаря вызывает проблемы из-за постбэка, и я нашел в нескольких местах, что решение заключается в том, чтобы поместить:
<base target="_self"/>
в заголовочную часть файла aspx. Все отлично работает... кроме одного, и только в Google Chrome. Чтобы вернуть выбранную дату, я устанавливаю returnValue всплывающего окна на дату, выбранную в календаре. В IE и Firefox всегда работает. Однако в Chrome это работает, только если я не меняю текущий месяц в календаре. Как только я его изменяю, возвращаемое значение не передается обратно вызывающей стороне showModalDialog. Как будто модальное окно больше не является исходным; возвращаемое значение не определено.
Кто-нибудь сталкивался с таким поведением и может предложить, как заставить его работать? Я попытался использовать dialogArguments, чтобы отслеживать окно вызывающего абонента, но оно передается только первому модальному окну (оно теряется после изменения текущего месяца).
Код в вызывающей процедуре:
var d = window.showModalDialog(...)
Код в модальном окне:
window.returnValue = selectedDate;
self.close();
Как я сказал Теему, selectedDate и window.returnValue всегда верны.Однако в случае с Google Chrome (после смены месяца в календаре) returnValue не передается обратно с помощью showModalDialog, а d не определено.