O aplicație HTML care utilizează evenimentul "onbeforeunload" se închide în mod neașteptat în Internet Explorer 7 atunci când faceți clic pe "Revocare"

Se aplică la: Internet Explorer 9

Simptome


Să luăm în considerare următorul scenariu:
  • Creați o aplicație HTML (HTA).
  • HTA utilizează evenimentul onbeforeunload .
  • Porniți HTA în Windows Internet Explorer 7.
  • Când închideți HTA, primiți un mesaj care seamănă cu următorul:
    Sigur navigați la această pagină?

    valoare șir

    Apăsați pe OK pentru a continua, sau Revocare pentru a rămâne pe pagina curentă.
    Notă În acest mesaj, Substituentul valoare șir reprezintă valoarea proprietății event.returnValue în cod pentru HTA.
În acest scenariu, HTA se închide așa cum vă așteptați atunci când faceți clic pe OK. Cu toate acestea, HTA se închide în mod neașteptat atunci când faceți clic pe Revocare.

Cauza


Această problemă se produce din cauza modul în care fișierul Shdocvw.dll tratează metoda IOleCommandTarget::Exec .

Stare


Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea "Se aplică la".

Mai multe informații


Această problemă se produce atunci când porniți HTA în Microsoft Internet Explorer 6.

Pași pentru reconstituirea problemei

  1. Creați o HTA.
  2. Introduceți următorul cod în 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. În Internet Explorer 7, porniți HTA.
  4. Închideți HTA.
  5. Faceți clic pe Revocare. Observaţi că se închide fereastra.

Referințe


Pentru mai multe informații despre HTA, vizitați următorul site Web Microsoft Developer Network (MSDN):Pentru mai multe informații despre proprietatea event.returnValue , vizitați următorul site MSDN Web: