请教,js如何在关闭浏览器时触发一个事件

JavaScript015

请教,js如何在关闭浏览器时触发一个事件,第1张

你可以写个东西

<html>

<head>

</head>

<script type="text/javascript">

function test(){

var a =document.getElementById("ok").value

alert(a)

window.close()

}

</script>

<body>

<table id="id">

<tr>

<td><input type="button" value="test" onclick="test()"/></td>

<input type="text"name="text" id="ok"/>

</tr>

</table>

</body>

</html>

操作一件事情,操作完成后 关闭浏览器

你要换一个思路,后台用一个Application数组来记录所有在线用户的登录状态,你的聊天页面要每隔一个固定的时间(比如20秒或半分钟)利用ajax调用后台一个固定的页面,这个页面的作用就是刷新自身session对应的application数组元素(用SessionID来匹配)的时间值,然后再遍历这个Application数组,如果发现有某个Application元素的时间值超过指定的间隔值(20秒或半分钟,当然为了安全起见,可以适当放宽,比如40秒或1分钟),那么就说明这个用户已经关闭浏览器或离线了,就可以把它删掉。然后你的聊天页面就可以把这个Application数组作为所有用户是否仍然在线的依据了。

利用onunload和onbeforeunload事件来判断用户是否离线是非常不保险的,最简单的,如果该用户的网络突然发生故障造成断网,这时是没有任何事件被触发的(即使有也没法传送到后台服务器),这样服务器端就会一直以为该用户在线(直到Session过期)。唯一可行的办法就是我上面说的,类似于上班打卡,就是每隔一段时间向服务器报告“我是在线的”,如果没有打卡,那就说明离线了。而且这种方法由于大部分是在后台完成的,对前台脚本的依赖性较小(只要支持ajax即可),因此基本上可以说兼容所有浏览器。

window.onbeforeunload = function close()

{ temp=0

var n = window.event.screenX - window.screenLeft

var b = n >document.documentElement.scrollWidth-20

if(b &&window.event.clientY <0 || window.event.altKey)

{

window.event.returnValue = "退出登录?"//这里可以放置你想做的操作代码

temp=1

}

}