Μια εφαρμογή HTML που χρησιμοποιεί το συμβάν "onbeforeunload" κλείνει απροσδόκητα στον Internet Explorer 7, όταν κάνετε κλικ στο κουμπί "Άκυρο"

Ισχύει για: Internet Explorer 9

Συμπτώματα


Εξετάστε το ακόλουθο σενάριο:
  • Μπορείτε να δημιουργήσετε μια εφαρμογή HTML (HTA).
  • Η HTA χρησιμοποιεί το συμβάν onbeforeunload .
  • Μπορείτε να ξεκινήσετε την HTA στον Windows Internet Explorer 7.
  • Όταν κλείσετε την HTA, λαμβάνετε ένα μήνυμα παρόμοιο με το ακόλουθο:
    Είστε βέβαιοι ότι θέλετε να απομακρυνθείτε από αυτήν τη σελίδα;

    τιμή συμβολοσειράς

    Πατήστε το κουμπί OK για να συνεχίσετε ή στο Άκυρο για να παραμείνετε στην τρέχουσα σελίδα.
    Σημείωση Σε αυτό το μήνυμα, το σύμβολο κράτησης θέσης τιμή string που αντιπροσωπεύει την τιμή της ιδιότητας event.returnValue του κώδικα για την HTA.
Σε αυτό το σενάριο, η HTA κλείνει όπως αναμένεται, όταν κάνετε κλικ στο κουμπί OK. Ωστόσο, η HTA κλείνει απροσδόκητα όταν κάνετε κλικ στο κουμπί Ακύρωση.

Αιτία


Αυτό το ζήτημα παρουσιάζεται εξαιτίας πώς το αρχείο Shdocvw.dll χειρίζεται τη μέθοδο IOleCommandTarget::Exec .

Κατάσταση


Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα σφάλμα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Περισσότερες πληροφορίες


Αυτό το ζήτημα δεν παρουσιάζεται όταν ξεκινάτε την HTA στον Microsoft Internet Explorer 6.

Βήματα για την αναπαραγωγή του προβλήματος

  1. Δημιουργήστε ένα HTA.
  2. Εισαγάγετε τον ακόλουθο κώδικα σε την 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. Στον Internet Explorer 7, ξεκινήστε την HTA.
  4. Κλείστε την HTA.
  5. Κάντε κλικ στο κουμπί Ακύρωση. Σημειώστε ότι το παράθυρο κλείνει.

Αναφορές


Για περισσότερες πληροφορίες σχετικά με τα αρχεία HTA, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web:Για περισσότερες πληροφορίες σχετικά με την ιδιότητα event.returnValue , επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web: