HTML-застосунок, який використовує "onbeforeunload" подія несподівано закривається в Internet Explorer 7 під час натискання "Скасувати"

Застосовується до: Internet Explorer 9

Причини


Розглянемо таку ситуацію:
  • Створення застосунку HTML (HTA).
  • HTA, використовує onbeforeunload події.
  • HTA запуску у Windows Internet Explorer 7.
  • Закрити HTA, з'являється повідомлення, подібне до такого:
    Ви дійсно бажаєте залишити цю сторінку?

    Рядковий параметр

    Натисніть "OK", щоб продовжити "або" Скасувати на поточній сторінці.
    Примітка. У цьому повідомленні покажчик місця заповнення Рядкове значення являє собою значення властивості Event. ReturnValue коду для HTA.
У цьому випадку HTA закривається, як очікувалося, після натискання кнопки OK. Проте HTA несподівано закривається після натискання скасувати.

Причина


Ця проблема виникає через те, як файлу Shdocvw. dll, обробляє IOleCommandTarget::Exec методом.

Стан


Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".

Додаткові відомості


Ця проблема не виникає під час запуску 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):Щоб отримати додаткові відомості про Event. ReturnValue власність, перейдіть на веб-сайті MSDN: