jueves, 28 de agosto de 2014

Funcion showModalDialog deprecada en Chrome v37 y superiores

A partir de la versión 37 de Google Chrome la función window.showModalDialog ha sido deprecada como muestra este post de Google Chrome.

El sistema Gestar utiliza mucho esta función y en muchos casos, todos los selectores de cuentas y controles derivados de LookupBox dejarán de funcionar mostrando en la consola un error como el siguiente:

Como solución temporal se podrá asistir a los usuarios a que utilicen Internet Explorer, en donde la función sigue vigente.

Para solucionar definitivamente este inconveniente, deberá cambiar las llamadas a esta función por window.open. pasándole un nombre de ventana y un alto y un ancho a la ventana. Es obligatorio enviar un ancho y un alto, ya que de lo contrario puede que la url a abrir se abra en una nueva pestaña o del tamaño de la pantalla, haciendo que se vea incorrectamente el contenido.

Aquí se muestran ejemplos de código con el reemplazo:

'Clásica customización del control LookupBox (funcion Render)
If bModal Then
 btnSearch.Attributes.Item("onclick") = "window.showModalDialog(crmlubtTypeUrl_" & Name & "('" & sMode & "',''), window, '');"
Else
 btnSearch.Attributes.Item("onclick") = "window.open(crmlubtTypeUrl_" & Name & "('" & sMode & "',''), '', '');"
End If


'NUEVO CODIGO: Se crea una variable para alojar las opciones de la nueva ventana
Dim modalOptions
modalOptions = ""
If bModal Then
 modalOptions = "width=600,height=600"
End If

'Se agrega el nombre de ventana _blank y se agregan las opciones para forzar abrir en una nueva ventana
btnSearch.Attributes.Item("onclick") = "window.open(crmlubtTypeUrl_" & Name & "('" & sMode & "',''), '_blank', '" & modalOptions & "');"

Las ventanas modales podían acceder a los campos de su pantalla "padre" a través de la propiedad "window.dialogArguments". Al cambiar la apertura de la ventana por la función "window.open" ahora se deberá acceder a la ventana padre a través del objeto "window.opener" en la ventana hija









No hay comentarios:

Publicar un comentario