Artikel ini ialah beberapa kandungan teras yang diringkaskan oleh editor Saya secara peribadi berpendapat ia akan membantu semua orang Sila lihat di bawah untuk kandungan khusus:
Onload hanya dilaksanakan apabila halaman dimuatkan
Hanya jalankan onunload
apabila halaman ditutup
Apabila halaman dimuat semula, onbeforeunload dilaksanakan dahulu, kemudian onunload, dan akhirnya onload.
Selepas pengesahan, saya sampai pada kesimpulan:
//Untuk IE, Google, 360:
//Onload hanya dilaksanakan apabila halaman dimuatkan
//Apabila halaman dimuat semula, acara onbeforeunload dilaksanakan sebelum muat semula, acara onunload dilaksanakan apabila halaman baharu akan menggantikan halaman lama, dan akhirnya acara onload dilaksanakan.
//Apabila halaman ditutup, peristiwa onbeforeunload berlaku dahulu, dan kemudian peristiwa onunload.
//Untuk Firefox:
//Apabila halaman dimuat semula, hanya onunload dilaksanakan;
Jadi kembali kepada topik, bagaimana untuk menentukan sama ada penyemak imbas ditutup atau dimuat semula? Saya telah mencuba ratusan kali mengikut pelbagai pendapat di Internet tidak berjaya. Pelbagai pendapat adalah seperti berikut:
window.onbeforeunload = function() //author: meizz { var n = window.event.screenX - window.screenLeft; var b = n > document.documentElement.scrollWidth-20; if(b && window.event.clientY < 0 || window.event.altKey) { alert("是关闭而非刷新"); window.event.returnValue = ""; //这里可以放置你想做的操作代码 }else { alert("是刷新而非关闭"); } } window.onbeforeunload = function() //author: meizz { var n = window.event.screenX - window.screenLeft; var b = n > document.documentElement.scrollWidth-20; if(b && window.event.clientY < 0 || window.event.altKey) { alert("是关闭而非刷新"); window.event.returnValue = ""; //这里可以放置你想做的操作代码 }else { alert("是刷新而非关闭"); } }
function CloseOpen(event) { if(event.clientX<=0 && event.clientY<0) { alert("关闭"); } else { alert("刷新或离开"); } } </script> <body onunload="CloseOpen(event)">
Tiada kaedah ini berkesan, tetapi saya tidak berputus asa, berfikir dan berfikir...
Menurut perkara di atas saya sampai pada kesimpulan,
//Untuk IE, Google, 360:
//Apabila halaman dimuat semula, acara onbeforeunload dilaksanakan sebelum muat semula, acara onunload dilaksanakan apabila halaman baharu akan menggantikan halaman lama, dan akhirnya acara onload dilaksanakan.
//Apabila halaman ditutup, peristiwa onbeforeunload berlaku dahulu, dan kemudian peristiwa onunload.
//Untuk Firefox:
Menyiarkan kod ujian saya:
var _beforeUnload_time = 0, _gap_time = 0; var is_fireFox = navigator.userAgent.indexOf("Firefox")>-1;//是否是火狐浏览器 window.onunload = function (){ _gap_time = new Date().getTime() - _beforeUnload_time; if(_gap_time <= 5) $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"浏览器关闭",time:_gap_time},function(json){},"text"); else $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"浏览器刷新",time:_gap_time},function(json){},"text"); } window.onbeforeunload = function (){ _beforeUnload_time = new Date().getTime(); if(is_fireFox)//火狐关闭执行 $.post(pathName+"/back/bi!aaaa.s2?t="+_beforeUnload_time,{msg:"火狐关闭"},function(json){},"text"); };
public void aaaa(){ System.out.println(base.getParameter("msg")+",间隔:"+base.getParameter("time")); }
Yang berikut akan memperkenalkan penyemak imbas untuk menutup acara mendengar dan menentukan sama ada untuk memuat semula atau menutup Menggunakan onunload atau onbeforeunload boleh memantau acara penutupan penyemak imbas, tetapi ia tidak dapat membezakan antara menutup dan menyegarkan. Kod js berikut boleh memantau sebahagian acara penutupan penyemak imbas!
//鼠标相对于用户屏幕的水平位置 - 窗口左上角相对于屏幕左上角的水平位置 = 鼠标在当前窗口上的水平位置 var n = window.event.screenX - window.screenLeft; //鼠标在当前窗口内时,n<m,b为false;鼠标在当前窗口外时,n>m,b为true。20这个值是指关闭按钮的宽度 var b = n > document.documentElement.scrollWidth-20; //鼠标在客户区内时,window.event.clientY>0;鼠标在客户区外时,window.event.clientY<0 if(b && window.event.clientY < 0 || window.event.altKey || window.event.ctrlKey){ 关闭浏览器时你想做的事 }else if(event.clientY > document.body.clientHeight || event.altKey){ 关闭浏览器时你想做的事 }
Di atas adalah keseluruhan kandungan artikel ini Jika ia tidak ditulis dengan baik, sila berikan saya pendapat anda yang berharga.