簡體   English   中英

如何識別onbeforeunload是由單擊關閉按鈕引起的

[英]how to identify onbeforeunload was caused by clicking close button

如何確定onbeforeunload是由單擊關閉按鈕或頁面刷新引起的,還是一般由onbeforeunload引起的事件?

這是一個片段:

window.onbeforeunload = function( e ){
    if( !e ) e = window.event;

    // insert code to determine which is the source of the event
}

請幫我。

通過參考各種文章並進行一些試驗和錯誤,最終提出了這個想法,該想法對我來說非常合適,就像我希望它發生的方式一樣。 邏輯也很容易實現,其思想是檢測關閉瀏覽器觸發的卸載事件。 在這種情況下,鼠標將不在窗口外,指向Close('X')按鈕。

$(window).on('mouseover', (function () {
    window.onbeforeunload = null;
}));


$(window).on('mouseout', (function () {
    window.onbeforeunload = ConfirmLeave;
}));

function ConfirmLeave() {
    return "";
}

ConfirmLeave函數將提供彈出的默認消息,如果需要自定義消息,則返回要顯示的文本而不是空字符串

看看是否有幫助,:)

據我所知,無法確定導致onbeforeunload 當窗口即將關閉時,無論是關閉瀏覽器還是其他方式,都會觸發該事件。

如果按下關閉按鈕,則e.clientY值為負。 對於其他可能的來源,我懷疑是否有解決方案。

window.onbeforeunload = function() {
   var e = window.event;
   alert(e.clientX + " / " + e.clientY);
}

我搜索了類似的內容,但最終空手而歸。 所以我嘗試做相反的

我們可以識別所有事件,但瀏覽器事件除外。 請參閱下面的(未經測試的)代碼段。

var target = $( e.target );
if(!target.is("a, :button, :submit, :input, .btn, .bulkFormButton")){
//Your code for browser events)
}
   $("form").submit(function () {
             //Your code for browser events)
   });

這對我有用,但仍有一些未處理的事件。 我正在尋找那些。 如果有人對他們有想法,請分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM