[問題] 請問如何使用js或jQ判斷重整頁面及關閉視窗

看板Ajax作者 (ꬮ....)時間11年前 (2014/06/12 00:00), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
如題,使用jsp開發, 最近遇到一個棘手的問題, 原本的設計是,當使用者刷新頁面或關閉視窗時, 會清除session,而入口的servlet會判斷是否有session ID,如果沒有便會轉到登入頁, 現在問題來了,User開了兩個IE頁籤,因為IE 8+是共用session, 因此,若其中一個頁籤刷新頁面或關閉視窗,便會清除session, 另一個頁籤連帶受影響,現在的想法是,在server端做個cache,記錄session id & 登入數,當登入時,登入數加一,登出或關閉視窗時則減一, 並判斷此session Id 的登入數是否為零,若為真則銷毀此session,而刷新頁面會有其他處理方式, 問題來了, (1) 如此分開判斷關閉與刷新的事件 (2) 如何完善地判斷是刷新事件 (目前是利用座標判斷 (3) 是否有更好的方法解決這個需求 (4) 如果上一頁的事件又該如何,這會變成User可以回上一頁再觸發一次事件 在web開發上小弟還算新手,煩請版上高手能給予指點!謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.71.132.212 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1402502427.A.626.html

06/12 00:04, , 1F
我的經驗是除非你能保持持續性連接(像socket.io)
06/12 00:04, 1F

06/12 00:04, , 2F
不然直接做成「一段時間無操作後登出」是比較實際的
06/12 00:04, 2F

06/12 00:06, , 3F
不然就是javascript內部的變數判定連接 這樣自然而然
06/12 00:06, 3F

06/12 00:07, , 4F
會單視窗單帳號 但非Single Page App應該不能這樣做
06/12 00:07, 4F

06/12 10:23, , 5F
既然都讓使用者多開了,建議你直接讓session時間到過期
06/12 10:23, 5F

06/12 10:26, , 6F
然後再思考,你原本設計刷新清session的原因,要怎麼解
06/12 10:26, 6F

06/12 21:13, , 7F
今天試了幾個方法,但多少都有點問題,看來真的不好解
06/12 21:13, 7F

06/12 21:14, , 8F
不知道有沒有方法直接將重刷的事件導掉
06/12 21:14, 8F

06/12 21:21, , 9F
用onbeforeunload()可以知道有刷新、關閉
06/12 21:21, 9F
文章代碼(AID): #1Jc7qROc (Ajax)
文章代碼(AID): #1Jc7qROc (Ajax)