当用户在没有注销的情况下直接关闭浏览器时,除了javascript之外还有其他选项可以触发Session_End()事件。如果我一直检查客户端是否向服务器发出请求,我认为当用户关闭浏览器时,服务器不会收到任何请求。那么如果有可能我该如何实现呢?此外,我是否可以随时检查用户是否正在查看我的任何页面,如果没有,我可以提出Session_End()事件吗?
答案 0 :(得分:1)
否,您无法检查用户正在做什么或何时关闭浏览器。 这显然违反了用户的用户和数据安全权利。此外,这样的功能将依赖于浏览器,因此很难实现,因为每个浏览器都有自己的接口和理念。
你可以做的是在javascript中实现一个函数,它每隔一分钟就会向你的服务器发送一个信号,告诉服务器用户仍处于活动状态。
然后,您可以存储用户最后一个信号的时间。这样,如果您在最后一分钟左右没有收到信号,就会看到用户处于非活动状态。
答案 1 :(得分:-1)
hii在javascript中有一个事件可以找到浏览器关闭事件。
但它不适用于所有浏览器。
他们就是榜样。
<HEAD>
<TITLE> TEST</TITLE>
</HEAD>
<script type="text/javascript">
javascript:window.history.forward(1);
var temp = true;
document.onkeydown = keyDownPress;
document.onmousedown = keyDownPress;
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
//alert(is_chrome);
if(is_chrome){
window.onbeforeunload = function(e) {
// confirmExit(e);
alert("1");
alert("2");
alert("3");
return "You are going to close?"; // you can make this dynamic, ofcourse...
}
}else{
window.onbeforeunload = confirmExit;
}
/*if (navigator.userAgent.indexOf('AppleWebKit') > -1) window.onbeforeunload = confirmExit;
else Event.observe(window, 'beforeunload', confirmExit);*/
/*
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(is_chrome){
window.onbeforeunload = function(e) {
confirmExit(e);
return "Are you sure you want to leave this page ?"; // you can make this dynamic, ofcourse...
};}else{
window.onbeforeunload = confirmExit;
}*/
/* if (window.addEventListener) { // all browsers except IE before version 9
window.addEventListener ("beforeunload", OnBeforeUnLoad, false);
}
else {
if (window.attachEvent) { // IE before version 9
window.attachEvent ("onbeforeunload", OnBeforeUnLoad);
}
}
*/
/* function(e){
if(temp==true ){
alert("You are going to close");
// return null;
}
}; */
function keyDownPress(e)
{
var evt = e || window.event;
var keyPressed = evt.which || evt.keyCode;
if (keyPressed==116) {
temp=false;
return false;
}
if(evt.button==2) {
alert("For security reasons, Right click has been disabled!");
return false;
}
}
function confirmExit(e){
// alert("ok ok ");
if(temp==true ){
alert("You are going to close");
}
}
这是代码在IE 8,Mozilla FF 8中正常工作 不适用于Google Chorme和FF 9