OnBeforeUnload обработчик говорит null в IE

В моем веб-приложении есть следующее:

$(window).bind('beforeunload', function() {
    if(unSavedChanges == true)
    {
        return 'You have unsaved changes';
    }
    return null;
});

это отлично работает в Safari и Firefox (за исключением того, что firefox не отображает мое настраиваемое сообщение в диалоговом окне onBeforeUnload). Однако в IE 8 в Windows 7 всегда отображается уведомление onBeforeUnload, в частности, если нет несохраненных изменений, он просто сказал бы "null". Как я могу запретить IE показывать уведомление onBeforeUnload, когда пользователь сохранил все и хочет уйти?

в соответствии с предложением Джона, я удалил строку return null, теперь код читает

$(window).bind('beforeunload', function() {
   if(unSavedChanges == true)
   {
       return 'You have unsaved changes';
   }
});

Ответ 1

Удалите строку return null, и все должно быть хорошо (в Javascript null и undefined есть разные вещи).

Кстати, MDN говорит, что для максимальной совместимости вы должны принять параметр event и установить event.returnValue.

Ответ 2

Я использую обычный javascript для этого и отлично работаю

function setConfirmUnload(on) {
     window.onbeforeunload = (on) ? unloadMessage : null;
}

function unloadMessage() {
     return 'Please stay on the page';
}