в Интернете вы найдете много людей, предлагающих вам использовать что-то вроде
window.onbeforeunload = null
но это не работает для меня в IE6. читая в MSDN документах для объекта события, я нашел ссылку на свойство event.cancelBubble, которое, как я думал, было решением. но благодаря Орсо, который указал, что установка «event.cancelBubble = true» бесполезна, способ избавиться от запроса на подтверждение состоит в том, чтобы вообще исключить оператор return, я решил использовать логическую переменную в качестве флага, чтобы решить, следует ли вернуть что-то или нет. в приведенном ниже примере я добавляю код javascript программно в код позади:
Page.ClientScript.RegisterStartupScript(typeof(String), "ConfirmClose", @" <script> window.onbeforeunload = confirmExit; function confirmExit() { if(postback == false) return ""Please don't leave this page without clicking the 'Save Changes' or 'Discard Changes' buttons.""; } </script>");
, тогда кнопка справки содержит следующую разметку aspx:
OnClientClick="postback=true;return true;
устанавливает для переменной 'postback' значение true, которое выбирается в функции verifyExit (), что приводит к отмене события.
надеюсь, вы найдете это полезным. протестировано и работает в IE6 и FF 1.5.0.2.