javascript - showModalDialog não retorna valor no Chrome
Eu fiz um pequeno popup de calendário em Javascript. Muito simples, usando o controle Calendar do ASP.NET. Eu chamo a janela pop-up com showModalDialog. Na janela modal, alterar o mês atual do calendário causa problemas por causa do postback, e eu encontrei em vários lugares que a solução é colocar:
<code><base target="_self"/> </code>
na parte principal do arquivo aspx. Tudo funciona muito bem ... exceto por uma coisa e apenas no Google Chrome. Para recuperar a data selecionada, defino o valor de retorno do pop-up para a data selecionada no calendário. No IE e no Firefox, sempre funciona. No Chrome, no entanto, só funciona se eu não alterar o mês atual no calendário. Assim que altero, o valor de retorno não é passado de volta para o chamador de showModalDialog. É como se a janela modal não fosse mais a original; o valor de retorno é indefinido.
Alguém já experimentou esse comportamento e tem uma sugestão para fazê-lo funcionar? Eu tentei usar dialogArguments para manter o rastreamento da janela do chamador, mas ele é passado apenas para a primeira janela modal (ele é perdido após a alteração do mês atual).
O código no procedimento de chamada:
<code>var d = window.showModalDialog(...) </code>
O código na janela modal:
<code>window.returnValue = selectedDate; self.close(); </code>
Como eu disse a Teemu, selectedDate e window.returnValue estão sempre corretos. No entanto, no caso do Google Chrome (após uma alteração de mês no calendário), returnValue não é devolvido por showModalDialog e d é indefinido.