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