Pregunta

Estoy mostrando un diálogo modal a través de "window.showModalDialog (..." lo que sucede en una función de VBScript (la página que se muestra es aspx). Me gustaría hacer un poco de cambio de tamaño de la ventana en función del número de filas de una tabla de datos que va a volver. así que naturalmente van a registrar un script de inicio que cambia el tamaño de la ventana en función del número de filas. Bueno, que no funcionó, por lo que trataron de registrar un script que acaba de aparecer un MsgBox.

El código es el siguiente (en el controlador de carga):

 if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            this.ClientScript.RegisterStartupScript(typeof(MyPageClassName), "hello",
                    @"<script language=vbscript>
                        sub fnWindowOnLoad()
                            MsgBox ""hello""
                        end sub
                        <script>", false);
        }
        if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            throw new Exception("Failed to load script");
        }

A mí parece que esto debería funcionar y mostrar un cuadro de mensaje que dice "hola" cuando se carga la página (Tengo proceso de carga de la ventana se establece en fnWindowOnLoad). Pero lo que sucede es nada, no es una excepción, ninguna alerta. He intentado todo tipo que podía pensar en la llamada typeof. Nada parece funcionar. Lo único que ocurre es que, dado que el diálogo es un ClientScript.RegisterStartupScript modos de transporte no se ejecute correctamente. Pero eso no tiene ningún sentido para mí.

pongo el MsgBox "hola" poner en mi bloque de script directa y la alerta mostró, por lo que es posible. Pero tengo que modificar algunos argumentos en el código detrás así que tengo que usar RegisterStartupScript la medida de lo que puedo decir.

¿Fue útil?

Solución 2

La solución para esto era tener un script que lee un valor de un campo oculto y luego cambiar el tamaño del cuadro de diálogo. El valor se establece en el Load. Usando RegisterStartupScript no parecía funcionar, tampoco RegisterClientScript, así que estoy bastante seguro de diálogo modal y RegisterXxx no se llevan bien. Necesidad de utilizar window.dialogHeight y window.dialogWidth en el VBScript.

Otros consejos

¿Ha intentado abrir la ventana a través de window.open () en lugar de window.showModalDialog ()? He visto algunas publicaciones en la web sobre las incompatibilidades entre showModalDialog () y RegisterStartupScript.

showModalDialog () es un único método de IE, por lo que no se recomienda de todos modos. Sé que es conveniente, ya que devuelve un valor, pero hay varias maneras de simular esta funcionalidad.

Editar: El otro problema con showModalDialog () es que IE menudo almacena en caché los resultados. Esto significa que si una vez que llamar al diálogo, no cambia su tamaño, luego otra vez que lo hace, entonces segundo tiempo podría conseguir su primer diálogo en caché. Una forma de evitar esto es añadir una cadena de consulta única al final. Como MyDialog.aspx? Q = 320,934 (generado o generada de forma aleatoria sobre la base de tics de servidor).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top