0
我有一個onbeforeunload事件,當我離開頁面並運行附加到該事件的代碼時,它應該會觸發。我把它放在我的頁面中的cshtml的腳本標記中,所以理論上它應該只在我處於特定頁面時纔會觸發並且離開它(我對事件的理解可能不正確)。但是,當我轉到另一頁時,onbeforeunload事件似乎不想觸發。我試圖設置一個斷點,但似乎沒有打它,並沒有得到我的控制檯在螢火蟲的任何錯誤。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
請注意,除非您返回非空(非空/未定義)值,否則不會顯示提示。你的SaveDashboard函數不會返回任何東西,儘管在任何情況下都應該打中斷點 –