我有一個角度應用程序,其中,當用戶登錄時,我將其狀態設置爲「聯機」db。 如果此用戶關閉瀏覽器,而不是執行菜單操作註銷,我如何將他的狀態更新爲「脫機」? 我試圖使用「$ window.onbeforeunload」事件並調用Web服務來註銷用戶。 代碼運行,但似乎執行將被瀏覽器「切斷」:服務從未被稱爲「真正」。角度:關閉窗口上的用戶註銷
0
A
回答
2
需要注意的一件事是,onbeforeunload事件不被所有瀏覽器支持,這是一個非標準事件。
而且,你的用例具有發射每當用戶提交表單,導航出頁的該事件的警告等
你需要從onbeforeunload過濾掉那些「事件」以確保您的邏輯只能在實際窗口關閉時執行。
你可以做到這一點使用jQuery:
var ignore;
$('a').live('click', function() { ignore = true; });
etc...
$(window).bind("beforeunload", function() {
return ignore || confirm("Do you want to close the browser/tab?");
});
的問題是,即使有這個,單擊確定任何後續代碼後永遠不會被執行,因爲......嗯,窗口被有效地關閉:)
要做到這一點,唯一的方法是,如果出於某種尷尬的原因,您可以在執行邏輯時阻止窗口關閉,然後關閉它。
FORTUNATELY這是不可能的。
因此,這使得你在服務器端正確執行此操作的唯一方法,檢查會話過期或類似的事情。
2
使用WebSocket連接或輪詢,並監聽它關閉/停止在服務器上。
作爲@安東尼奧說,你不能依靠客戶端一致地通知你,它正在關閉。
相關問題
- 1. 關閉窗口時註銷
- 2. 父窗口用戶註銷時關閉特定的子窗口
- 3. 當瀏覽器窗口關閉時自動註銷用戶 - salesforce
- 4. 角度窗口注入
- 5. 防止用戶註銷或關閉
- 6. 當用戶關閉標籤時註銷
- 7. 在odoo中註銷後關閉用戶
- 8. JavaScript:如何在用戶選擇註銷後關閉所有子窗口?
- 9. 無關閉窗口的關閉窗口
- 10. C#關閉所有窗口,但也能夠註銷
- 11. AngularJS在關閉瀏覽器窗口時自動註銷
- 12. 的Javascript註冊窗口/標籤關閉
- 13. easygui關閉按鈕(在窗口的右上角)不起作用
- 14. ASP.NET - 在瀏覽器選項卡上關閉用戶註銷
- 15. 在WindowsME上處理用戶註銷或機器關閉請求
- 16. 關閉按鈕的角度UI Bootstrap彈出窗口
- 17. 關閉窗口用戶批量輸入
- 18. 當用戶關閉窗口或標籤
- 19. 如何在我關閉窗口時註銷我的應用程序?
- 20. 關閉用戶關閉窗口後的前景
- 21. 當用戶關閉其中一個窗口時,WPF關閉所有窗口
- 22. 關閉窗口
- 23. 當用戶關閉瀏覽器時自動註銷用戶
- 24. Cocoapods:關閉MagicalRecord註銷
- 25. 如何在WPF/MVVM右上角的關閉圖標時處理關閉窗口?
- 26. 使用子窗口關閉父窗口。
- 27. 銷燬存儲在窗口關閉的數據庫中的用戶會話
- 28. Selenium:彈出窗口關閉後用戶切換到主窗口
- 29. 用戶註銷或關閉時的C#調用函數
- 30. 子WebBrowser窗口上的「關閉」按鈕關閉父窗口(.NET,winforms)
您是否設置了服務器端會話?如果是這樣,您應該能夠在會話過期時運行代碼,而不用擔心在UI中擔心它。 – JeffryHouser
好的,謝謝我會嘗試使用您建議的解決方案 – girtri