Une application HTML qui utilise l’événement « onbeforeunload » se ferme inopinément dans Internet Explorer 7 lorsque vous cliquez sur « Annuler »

S’applique à : Internet Explorer 9

Symptômes


Considérez le scénario suivant :
  • Vous créez une application HTML (HTA).
  • La HTA utilise l’événement onbeforeunload .
  • Vous démarrez la HTA dans Windows Internet Explorer 7.
  • Lorsque vous fermez la HTA, vous recevez un message semblable au suivant :
    Êtes-vous sûr de que vouloir quitter cette page ?

    valeur de chaîne

    Appuyez sur OK pour continuer ou sur Annuler pour rester sur la page en cours.
    Remarque Dans ce message, la valeur de la chaîne d’espace réservé représente la valeur de la propriété event.returnValue dans le code de la HTA.
Dans ce scénario, la HTA ferme comme prévu lorsque vous cliquez sur OK. Toutefois, la HTA ferme inopinément lorsque vous cliquez sur Annuler.

Cause


Ce problème se produit en raison de la façon dont le fichier Shdocvw.dll gère la méthode IOleCommandTarget::Exec .

État


Microsoft a confirmé qu'il s'agissait d'un bogue dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations


Ce problème ne se produit pas lorsque vous démarrez la HTA dans Microsoft Internet Explorer 6.

Procédure pour reproduire le problème

  1. Créer une HTA.
  2. Insérez le code suivant dans 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. Dans Internet Explorer 7, démarrez la HTA.
  4. Fermez la HTA.
  5. Cliquez sur Annuler. Notez que la fenêtre se ferme.

Références


Pour plus d’informations sur les applications HTA, visitez le site Web de Microsoft Developer Network (MSDN) à l’adresse suivante :Pour plus d’informations sur la propriété event.returnValue , visitez le site Web MSDN suivant :