Una aplicación HTML que utiliza el evento "onbeforeunload" se cierra inesperadamente en Internet Explorer 7 al hacer clic en "Cancelar"

Se aplica a: Internet Explorer 9

Síntomas


Imagine el siguiente escenario:
  • Crear una aplicación HTML (HTA).
  • La HTA utiliza el evento onbeforeunload .
  • Se inicia la HTA en Windows Internet Explorer 7.
  • Al cerrar la HTA, recibirá un mensaje similar al siguiente:
    ¿Está seguro de que desea salir de esta página?

    valor de cadena

    Presione Aceptar para continuar o en Cancelar para permanecer en la página actual.
    Nota: En este mensaje, el valor de cadena de marcador de posición representa el valor de la propiedad event.returnValue en el código de la HTA.
En este escenario, la HTA se cierra según lo esperado cuando se hace clic en Aceptar. Sin embargo, la HTA cierra inesperadamente cuando hace clic en Cancelar.

Causa


Este problema se produce debido a que forma el archivo Shdocvw.dll controla el método de IOleCommandTarget::Exec .

Estado


Microsoft ha confirmado que se trata de un error de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información


Este problema no se produce cuando se inicia la HTA en Microsoft Internet Explorer 6.

Pasos para reproducir el problema

  1. Crear una HTA.
  2. Inserte el código siguiente en la HTA:
    <html>
    <head>
    <TITLE>TEST</TITLE>
    <HTA:APPLICATION ID="TEST"
    APPLICATIONNAME="TEST"
    BORDER="thick"
    BORDERSTYLE="normal"
    CAPTION="yes"
    CONTEXTMENU="no"
    MAXIMIZEBUTTON="no"
    MINIMIZEBUTTON="yes"
    SELECTION="no"
    SHOWINTASKBAR="yes"
    SINGLEINSTANCE="yes"
    SYSMENU="yes"
    VERSION="1.0"
    WINDOWSTATE="normal"/>

    <script type="text/javascript">
    function closeIt()
    {
    event.returnValue = "
    string value"; // Any string value here forces a dialog box to appear before the window closes. }
    </script>
    </head>

    <body onbeforeunload="closeIt()">

    <a href="http://www.microsoft.com">Click here to navigate to www.microsoft.com </a>

    </body>

    </html>
  3. En Internet Explorer 7, inicie la HTA.
  4. Cierre la HTA.
  5. Haga clic en Cancelar. Observe que la ventana se cierra.

Referencias


Para obtener más información sobre HTA, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):Para obtener más información acerca de la propiedad event.returnValue , visite el siguiente sitio Web de MSDN: