我想控制人們可以輕鬆離開我的應用程序。現在,我知道我不能完全做到這一點。這是cron工作的目的。但我想盡可能多地抓住這些情況。如果OnBeforeUnload接受對話框,它們可以運行代碼嗎?
我想,我可以使用onBeforeUnload
來顯示對話框,警告他們離開並請他們請點擊退出按鈕。
但後來我發現當調用onBeforeUnload
時可能會運行同步AJAX(heh)調用;正如我所理解的那樣,瀏覽器會在繼續之前等待它完成,這是同步的好處。這樣,我可以告訴服務器,當他們關閉窗口時我正在註銷。因爲它在onBeforeUnload
而不是onUnload
,所有的數據仍然存在,並且會發送呼叫。
我的問題是,是否有可能將這些結合起來?我想彈出警告他們離開,然後如果他們繼續想離開,發送消息,他們實際上正在離開。
我明白這一點,我不能這樣做;我可以這樣做:
- 發送消息僅
- 豎起對話框只
- 發送和把彈出的對話框
消息......但我不能發送如果他們接受對話,有條件的消息,對吧?我的理解是,當他們點擊「確定,我想離開」時,它立即啓動onUnload
,到那時已經太晚了。上面的#3沒有用處,因爲我不想發送他們正在註銷的消息,然後讓他們取消對話框並保留在頁面上。
我可以吃我的蛋糕嗎?我可以問他們是否想離開,如果是,發送信息?
不要依賴於'事情,這不是故障安全的:這個非標準的事件不被Opera支持,因此從不觸發。此外,使用任務管理器或其他東西(* nix'kill'命令)來終止瀏覽器也不會觸發此事件。 – 2010-06-25 21:02:50
正如我在文章開頭所說的那樣,我並不打算在瀏覽器上依賴任何東西。這就是服務器端cron作業的目的:捕捉不切實際的關閉。我希望能夠儘可能地優雅,儘可能抓住儘可能多的情況。 – Andrew 2010-06-25 21:33:11
啊,我錯過了那部分。 – 2010-06-26 10:10:08