Error: la propiedad window.closed devuelve valores incorrectos

Seleccione idioma Seleccione idioma
Id. de artículo: 241109 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

La propiedad window.closed se utiliza cuando una ventana principal Abre una ventana secundaria mediante una llamada window.open y el elemento primario o secundario necesita saber cuando la ventana secundaria o primaria, respectivamente, ha cerrado.

La propiedad opener hace referencia a la ventana que abrió al actual (mediante la llamada de método window.open ). Cuando la ventana secundaria comprueba la propiedad opener.closed , es false cuando el elemento primario está abierto y true en caso contrario, es decir, se invierte el valor devuelto.

Cuando el elemento primario comprueba el estado de la ventana secundaria mediante propiedad cerrado de la ventana secundaria, se devuelven los mismos resultados incorrectos.

Solución

La solución para el elemento secundario es que el principal establezca una variable en la ventana de secundarios que mantiene el estado correcto de la ventana primaria. El usuario infantil a continuación, usa esta variable en lugar de la propiedad opener.closed .

La solución para el elemento primario es para invalidar la propiedad cerrado de la ventana secundaria. Es recomendable utilizar la misma lógica como para la ventana secundaria para asegurarse de que la lógica no se interrumpe cuando se corrige este comportamiento en una versión posterior de Internet Explorer y más seguro

El código HTML siguiente muestra el error y también cómo solucionar el problema.
  1. Guarde el archivo siguiente como Parent.htm:
    <html>
    <head>
    <script>
    var childWin;
    var childOpen = false;
    </script>
    </head>
    <body BGCOLOR="white">
    <input type="button" value="Open Child" id="button1" name="button1" onclick="OpenChild()" >
    <p>
    <input type="button" value="Is Child Open(Bug)?" id="button2" name="button2" onclick="alert(childWin.closed)">
    <p>
    <input type="button" value="Is Child Open(Fix)?" id="button3" name="button3" onclick="alert(childOpen)">
    <script>
    function OpenChild()
    {
    	childWin = window.open ("Child.htm")
    	childOpen = true;
    }
    function UpdateChild()
    {
    	//Only if child window is still open, set the parentOpen property
    	if (childOpen == true)
    	{
    		childWin.parentOpen = false
    	}
    }
    window.onunload = UpdateChild;
    </script>
    </body>
    </html>
    					
  2. Guarde el archivo siguiente como child.htm:
    <html>
    <head>
    <script>
    var parentOpen = true
    </script>
    </head>
    <body BGCOLOR="white">
    <input type="button" value="Is Parent Open(Bug)?" id="button1" name="button1" onclick="alert(window.opener.closed)">
    <input type="button" value="Is Parent Open?" id="button2" name="button2" onclick="alert(parentOpen)">
    
    <script>
    window.onunload = UpdateParent;
    function UpdateParent()
    {
    	//Only if the parent is open, update the status of the child window
    	if (parentOpen)
    	{
    		window.opener.childOpen = false;
    	}
    }
    </script>
    </body>
    </html>
    					
  3. Desplácese a Parent.htm y haga clic en el botón Secundario de abrir para abrir la ventana secundaria.
  4. Haga clic en los botones Es abrir secundarios antes y después de cerrar la ventana secundaria para reproducir el error y probar la corrección. Como alternativa, haga clic en los botones Es abrir a principal antes y después de cerrar la ventana primaria para las pruebas.

Estado

Microsoft ha confirmado que se trata de un error de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Referencias

Para obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, consulte los sitios Web de Microsoft siguientes:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/iep
(c) Microsoft Corporation 1999, Reservados todos los derechos. Contribuciones por Kusuma Vellanki, Microsoft Corporation.

Propiedades

Id. de artículo: 241109 - Última revisión: jueves, 11 de mayo de 2006 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer (Programming) 6.0
Palabras clave: 
kbmt kbbug kbdhtml kbdocfix kbfaq kbpending KB241109 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 241109
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com