Тестирование, Тестирование... Помещенный как можно больше логики в модели и затем Вы сможете протестировать его правильно. Модульные тесты тестируют данные и способ, которым они формируются путем тестирования модели, и функциональные испытания тестируют способ, которым их направляют или управляют путем тестирования контроллеров, поэтому из этого следует, что Вы не можете протестировать целостность данных, если это не находится в модели.
j
Это может помочь
Событие unload отправляется элементу окна, когда пользователь уходит со страницы. Это может означать одно из многих. Пользователь мог щелкнуть ссылку, чтобы покинуть страницу, или ввести новый URL-адрес в адресной строке. Кнопки «Вперед» и «Назад» активируют событие. Закрытие окна браузера вызовет событие. Даже перезагрузка страницы сначала создаст событие выгрузки.
Ссылка
непроверенная
$(window).unload(function(e){
e.preventDefault();
$(window).trigger('popstate ');
});
$(window).bind('popstate ',function(){
//your ajax call here
});
и, наконец, DEMO нажмите на кнопку назад браузера, чтобы увидеть, как она работает
обновление
вы правы, выгрузка будет отменена, но вы можете сделать что-то вроде
$(window).unload(function(e){
e.preventDefault();
$(window).trigger('beforeunload');
});
$(window).bind('beforeunload',function(){
alert('call your ajax here');
return '';
});