У меня есть событие onbeforeunload, которое должно срабатывать, когда я покидаю страницу и запускаю код, который я подключил к этому событию. Я поместил это в тег скриптов cshtml на моей странице, поэтому теоретически он должен срабатывать только в том случае, если я нахожусь на этой странице и удаляю его (мое понимание события может быть неправильным). Однако, когда я перехожу на другую страницу, событие onbeforeunload похоже не хочет запускаться. Я попытался установить на нем точку останова, но, похоже, не попал в нее, и я не получил никаких ошибок на моей консоли в firebug.onbeforeunload не работает
Я смотрел на этот пост, который один из плакатов упомянутых с помощью этого события, чтобы обнаружить изменения страницы Best way to detect when a user leaves a web page?
<script type="text/javascript">
$(document).ready(function() {
window.onbeforeunload = SaveDashboard;
});
function SaveDashboard(){
var gridArray = _.map($('.grid-stack .grid-stack-item:visible'), function (el) {
el = $(el);
var gridID = el.find('.grid-stack-item-content.ui-draggable-handle').first().attr('id');
var node = el.data('_gridstack_node');
return {
id: gridID,
x: node.x,
y: node.y,
width: node.width,
height: node.height
};
});
$.ajax({
url: 'Dashboard/EditWidgets/',
type: 'PUT',
data: {
widget: gridArray
},
success: function (dataset) {
},
failure: function (xhr, error) {
console.log(xhr)
console.log(error)
},
});
}
</script>
["* Это событие срабатывает, когда окно собирается выгрузить свои ресурсы. Документ по-прежнему отображается, и событие все еще отменяется. *"] (Https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload) Таким образом, он срабатывает, когда вы закрываете окно, если вы все еще просматриваете страницу. Он не должен срабатывать, если вы просматриваете другую страницу, когда она закрывается. –
Это один из обработчиков событий, которые я бы ** не ** объявлял внутри 'document.ready()', так как вы хотите как можно скорее прикрепить его к окну. – dave
Обратите внимание, что приглашение не будет отображаться, если вы не вернете значение non-void (non-null/undefined). Функция SaveDashboard ничего не возвращает, хотя точка останова должна быть удалена в любом случае –