我用 Javascript 制作了一个小日历弹出窗口。非常简单,使用来自 ASP.NET 的 Calendar 控件。我用 showModalDialog 调用弹出窗口。在模态窗口中,更改日历的当前月份因为回发导致出现问题,我在几个地方找到了解决方案:
<base target="_self"/>
在 aspx 文件的头部。一切都很好......除了一件事,而且只在谷歌浏览器中。为了取回选定的日期,我将弹出窗口的 returnValue 设置为日历中选定的日期。在 IE 和 Firefox 中,它始终有效。但是,在 Chrome 中,它仅在我不更改日历中的当前月份时才有效。一旦我改变它,返回值就不会传回给 showModalDialog 的调用者。就好像模态窗口不再是原来的窗口了;返回值未定义。
有没有人经历过这种行为并有建议让它发挥作用?我尝试使用 dialogArguments 来跟踪调用者窗口,但它仅传递到第一个模式窗口(更改当前月份后丢失)。
调用过程中的代码:
var d = window.showModalDialog(...)
模态窗口中的代码:
window.returnValue = selectedDate;
self.close();
正如我对 Teemu 所说的, selectedDate 和 window.returnValue 都是正确的。但是,在 Google Chrome 的情况下(日历更改一个月后),showModalDialog 不会传回 returnValue,并且 d 未定义。