Мы используем window.onbeforeunload в основном, если пользователь выполняет поиск текста на странице в окне поиска, который больше не сохраняется. Поэтому мы хотим использовать fetch или sendBeacon для одного и того же для всех браузеров, кроме IE вместо window.onbeforeunload.
Фрагмент кода для поиска текста в окне поиска:
<script type="text/javascript" charset="utf-8">
var unloadCatcher = function() {
var dateObjAjax = new Date();
var timestamp = dateObjAjax.getTime();
var sortColumnIndex = $('#example').dataTable().fnSettings().aaSorting[0][0];
var pageType = "EPPatientList";
var paginationSize = $("#example_length select option:selected").prop('value');
var sortDirection = $('#example').dataTable().fnSettings().aaSorting[0][1];
var searchText = "";
if ($('#search_input').is(':visible')) {
searchText = $('#search_input').val();
$("#hiddenSearchText").val(searchText);
}
else {
$("#hiddenSearchText").val("");
}
$.ajax({
url: "<%=userPreference%>&sortColumnIndex=" + sortColumnIndex
+ "&pageType=" + pageType
+ "&paginationSize=" + paginationSize
+ "&sortDirection=" + sortDirection
+ "&time="+timestamp,
type: "post",
data: $("#hiddenSearchForm").serialize(),
cache: false,
async: false,
success: function(data){
}
});
var otable = $('#example').DataTable();
var pageSize = otable.page.info().length;
var expdate = new Date();
expdate.setTime(expdate.getTime() + (60 * 60 * 1000 * 24 * 365 * 20));
$.cookie('SJM_PT_'+userLogonCookieName+'_PageSize',pageSize,{ expires: expdate });
}
window.onbeforeunload = unloadCatcher;
</script>