台灣最大程式設計社群網站
線上人數
1416
 
會員總數:244810
討論主題:188843
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> 偵測視窗關閉
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
偵測視窗關閉
價值 : 20 QP  點閱數:2705 回應數:8

樓主

crr
門外漢
0 24
400 57
發送站內信

各位大大午安,想請為各位是否有寫過偵測網頁視窗關閉的相關功能,目前找到的大多是onunload這個function,但似乎有支援上的問題,僅支援ie等等的問題,我試著玩了一下ie似乎也僅在重新整理時偵測的到,比較像是偵測葉面切換,但典籍被關閉好像不好偵測。

目前是想寫關閉後做一些動作像是紀錄或前台功能啟動,請問是否有大大寫過相關的功能,或有推薦間接可以達到的問題。

搜尋相關Tags的文章: [ jquery ] , [ javascript ] , [ ] ,
本篇文章發表於2015-12-09 12:02
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
這個?
本篇文章回覆於2015-12-09 13:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一般來說~~~關閉頁面可以用onbeforeunload及onunload這兩個事件來處理。

只是要注意的幾件事。

1.要知道當重新整理或是點換頁的情況下。也會視同關閉目前頁面。所以得需要再做一些操作上的判斷。
大多數的做法有很多,一個是將所有的表單及a連結。做欄載事件處理。將原本關閉事件的動作給關掉。
但重新整理的部份就會比較麻煩。只能用偵測按鍵來處理判斷了。

2.關閉頁面的同時,其實也會發生物件已經正在被移除中。這時也很有可能無法做一些操作物件的事。

只要先注意以上這幾點。

另~~~如直接關閉瀏覽器的情況下。有很大的機會並不會去觸發關閉事件。瀏覽器就會被關掉了。
畢竟這運行的原理就有點不同。雖然它還是可能會觸發事件。但因為關閉瀏覽器的情況下是屬於程式關閉。
它並不會去理會網頁的動作直接關閉程式。
關於這點目前是比較無解的。這要注意了。
本篇文章回覆於2015-12-09 14:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

crr
檢舉此回應
to Daimom 大大

哪個???


to 浩瀚星空 大大

恩所以可以用onbeforeunload去包住onunload之類的做法,但如大大所說,很大機會偵測不到,重點又回到onunload身上,幾乎偵測不到無法作用Orz.....
本篇文章回覆於2015-12-09 16:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
連結你沒看到?
本篇文章回覆於2015-12-10 09:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
所謂的 onbeforeunload 跟 onunload 這兩個事件。
一個是離開頁面之前處理。一個是離開中處理。
這塈甯隻韝ㄔ峞u關閉」而是用「離開」來解釋。

因為這些事件都是網頁準備離開時去觸發的事件。
所以當用戶強制關閉瀏覽器的情況下,雖然還是會觸發事件。但也有可能會因為瀏覽器被關閉了而停止處理了。

大多數而言,我會利用ajax的原理。也就是在觸發的瞬間給命令到後端程式。
這樣比較不會發生沒處理到的問題。
本篇文章回覆於2015-12-10 11:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

crr
檢舉此回應
to Daimom 大大

沒有也,我這邊沒有看到東西。


to 浩瀚星空 大大

用 onunload 後讓他直接跑function呼叫ajax,我試了一下,但很尷尬的是... onunload不全然是關閉後會偵測到,重新整理頁面也會偵測到orz...。簡單來說我重新整理頁面他也會跑ajax,很尷尬。
本篇文章回覆於2015-12-10 16:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我上面就有說了。

那並非是關閉。而是離開頁面的事件。
所以重整或是點擊換頁。都是會觸發該事件的。
(因為對瀏覽器來說,它的頁面是算離開了沒錯。)

所以你得針對這些動作去做排除處理。

基本上,因為很麻煩。所以現在我都不會再用這兩個事件了。
如果是為了登出的問題。就只好做成時間制了。(很多論壇都是用這樣的方式)

另外一種方式則是不實際登出。而是去記錄離開時間。進入時則記錄進入時間。
本篇文章回覆於2015-12-10 16:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

crr
檢舉此回應
to 浩瀚星空

感謝大大,因為某些原因無法達到大大說的方法,看來是無解了感謝大大QQ
本篇文章回覆於2015-12-16 10:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.