javascript return-value showmodaldialog

javascript: showModalDialog no devuelve valor en Chrome



return-value (2)

Para seguir usando showModalDialog en mi página, tuve que encontrar mi propia solución para el error. Asi que aqui esta...

En Google Chrome, después de una devolución de datos, showModalDialog siempre devuelve indefinido. Sin embargo, la propiedad window.opener en el diálogo modal apunta a la ventana de la persona que llama, incluso después de las devoluciones de datos. Entonces, pensé en poner el resultado del diálogo en la propiedad returnValue de la ventana de la persona que llama. Y funciona.

En la ventana de la persona que llama:

var prevReturnValue = window.returnValue; // Save the current returnValue window.returnValue = undefined; var dlgReturnValue = window.showModalDialog(...); if (dlgReturnValue == undefined) // We don''t know here if undefined is the real result... { // So we take no chance, in case this is the Google Chrome bug dlgReturnValue = window.returnValue; } window.returnValue = prevReturnValue; // Restore the original returnValue At this point, use dlgReturnValue for further processing

En la ventana de diálogo modal:

if (window.opener) { window.opener.returnValue = dateValue; } window.returnValue = dateValue; self.close();

Hice un pequeño calendario emergente en Javascript. Muy simple, usando el control de calendario de ASP.NET. Llamo a la ventana emergente con showModalDialog. En la ventana modal, cambiar el mes actual del calendario causa problemas debido a la devolución, y encontré en varios lugares que la solución es poner:

<base target="_self"/>

En la parte principal del archivo aspx. Todo funciona muy bien ... excepto por una cosa, y solo en Google Chrome. Para recuperar la fecha seleccionada, establezco el valor de retorno de la ventana emergente en la fecha seleccionada en el calendario. En IE y Firefox, siempre funciona. Sin embargo, en Chrome solo funciona si no cambio el mes actual en el calendario. Tan pronto como lo cambio, el valor devuelto no se pasa al llamador de showModalDialog. Es como si la ventana modal ya no fuera la original; el valor de retorno es indefinido

¿Alguien ha experimentado ese comportamiento y tiene alguna sugerencia para hacerlo funcionar? Intenté usar dialogArguments para hacer un seguimiento de la ventana de la persona que llama, pero se pasa solo a la primera ventana modal (se pierde después de cambiar el mes actual).

El código en el procedimiento de llamada:

var d = window.showModalDialog(...)

El código en la ventana modal:

window.returnValue = selectedDate; self.close();

Como le dije a Teemu, selectedDate y window.returnValue siempre son correctos. Sin embargo, en el caso de Google Chrome (después de un cambio de mes en el calendario), showModalDialog no devuelve returnValue yd no está definido.


Tuve este mismo error, lo que encontré en algunos foros es que si pones tus controles en un updatePanel y ContentTemplate funcionarán:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> </ContentTemplate> </asp:UpdatePanel>