創作內容

1 GP

在使用者離開網頁時偷偷存資料

作者:likwueron│2017-02-21 15:04:41│巴幣:2│人氣:245
簡單的js技術,可能沒那麼正規吧。
事實上也沒有那麼偷偷啦,至少我寫這個只是為了把使用者的進度存入伺服器,某方面和巴哈的自動儲存文章類似。(但我從來搞不懂這東西是不是正常的,反正我常常文章丟失)

老實說這篇算是偷偷寫的才會加上偷偷啦(笑)。

首先,無論你是關掉分頁,使用上一頁/下一頁,或更乾脆的把瀏覽器關掉,都會產生一個叫beforeunload的事件。
所以我們要等待這個事件發生,然後植入我們要的動作。

很簡單,但有個小問題:你可能在傳訊途中頁面就整個關掉了。
我用了一個粗糙的方法,加個無窮迴圈,等事情作完後才取消它。
大概長這樣:(使用jQuery)

function savedata() {
    $.post('/savedata', data).then() {
        beforeunloadLock = false;
    });
}
var beforeunloadLock = false;
$(window).on('beforeunload', function() {
    savedata();
    beforeunloadLock = true;
    while(beforeunloadLock) ;
});

可能的問題就是關掉整個瀏覽器的情形吧?
如果可以加個對話框的話會比較保險,但工作要求是這應該儘可能的沉默。

好啦,後來我發現,這能否正常執行全靠運氣...
因為那個while迴圈可能在你的ajax執行前就咬死執行緒。
至於為什麼一開始可以?我想是因為瀏覽器還沒優化js的關係。
最後我只好加一個對話框讓人點。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3487930
Some rights reserved. 姓名標示-非商業性 2.5 台灣

相關創作

同標籤作品搜尋:javascript|beforeunload|網頁設計

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★iqandadie 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:可以的話我想這導入儀不需... 後一篇:遊覽車何解?...

追蹤私訊切換新版閱覽

作品資料夾

Lobster0627全體巴友
大家可以多多來我的YT頻道看看哦(*´∀`)~♥https://www.youtube.com/@lobstersandwich看更多我要大聲說1小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】