今天在作日新圖庫的時候遇到個問題,用戶上傳模塊中,上傳是用了一個SWFUpload的上傳插件,上傳是ajax實現html
的,假設用戶上傳了圖片,並無提交圖集,而是離開了頁面,關閉瀏覽器或者刷新了頁面,服務器上會留下ajax
不少垃圾,在網上找了個js的解決方法,首先判斷用戶離開頁面刷新或關閉,而後使用ajax刪除服務器上的圖瀏覽器
片。服務器
js判斷離開頁面刷新或關閉的方法:(轉自:http://blog.sina.com.cn/s/blog_45b088420100gahi.html)測試
一個判斷頁面是否真的關閉和刷新的好方法:ui
window.onbeforeunload=function (){
alert("===onbeforeunload===");
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("你關閉了瀏覽器");
}else{
alert("你正在刷新頁面");
}
}
這段代碼就是判斷觸發onbeforeunload事件時,鼠標是否點擊了關閉按鈕,或者按了ALT+F4來關閉網頁,若是是,則認爲系統是關閉網頁,不然在認爲系統是刷新網頁。url
onbeforeunload與onunload事件
Onunload,onbeforeunload都是在刷新或關閉時調用,能夠在<script>腳本中經過window.onunload 來指定或者在<body>裏指定。區別在於onbeforeunload在onunload以前執行,它還能夠阻止onunload的執行。
Onbeforeunload也是在頁面刷新或關閉時調用,Onbeforeunload是正要去服務器讀取新的頁面時調用,此時還沒開始讀取;而 onunload則已經從服務器上讀到了須要加載的新的頁面,在即將替換掉當前頁面時調用。Onunload是沒法阻止頁面的更新和關閉的。而 Onbeforeunload 能夠作到。spa
頁面加載時只執行onload
頁面關閉時先執行onbeforeunload,最後onunload
頁面刷新時先執行onbeforeunload,而後onunload,最後onload。firefox
一、onbeforeunload事件:
說明:目前三大主流瀏覽器中firefox和IE都支持onbeforeunload事件,opera還沒有支持。
用法:
·object.onbeforeunload = handler
·<element onbeforeunload = 「handler」 … ></element>
描述:
事件觸發的時候彈出一個有肯定和取消的對話框,肯定則離開頁面,取消則繼續待在本頁。handler能夠設一個返回值做爲該對話框的顯示文本。插件
觸發於:
·關閉瀏覽器窗口
·經過地址欄或收藏夾前往其餘頁面的時候
·點擊返回,前進,刷新,主頁其中一個的時候
·點擊 一個前往其餘頁面的url鏈接的時候
·調用如下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
·當用window open打開一個頁面,並把本頁的window的名字傳給要打開的頁面的時候。
·從新賦予location.href的值的時候。
·經過input type=」submit」按鈕提交一個具備指定action的表單的時候。
能夠用在如下元素:
·BODY, FRAMESET, window
平臺支持:
IE4+/Win, Mozilla 1.7a+, Netscape 7.2+, Firefox0.9+
示例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>onbeforeunload測試</title>
<script>
function checkLeave(){
event.returnValue="肯定離開當前頁面嗎?";
}
</script>
</head>
<body onbeforeunload="checkLeave()">
</body>
</html>
二、onunload事件
用法:
·object.onbeforeunload = handler
·<element onbeforeunload = "handler"></element>
描述:
當用戶關閉一個頁面時觸發 onunload 事件。
觸發於:
·關閉瀏覽器窗口
·經過地址欄或收藏夾前往其餘頁面的時候
·點擊返回,前進,刷新,主頁其中一個的時候
·點擊 一個前往其餘頁面的url鏈接的時候
·調用如下任意一個事件的時候:click,document write,document open,document close,window close ,window navigate ,window NavigateAndFind,location replace,location reload,form submit.
·當用window open打開一個頁面,並把本頁的window的名字傳給要打開的頁面的時候。
·從新賦予location.href的值的時候。
·經過input type=」submit」按鈕提交一個具備指定action的表單的時候。
示例:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>onunload測試</title> <script> function checkLeave(){ alert("歡迎下次再來!"); } </script> </head> <body onunload="checkLeave()"> </body> </html>