如何在用户关闭一个窗口时执行一个ASP文件?帮帮我,我想了半天

时间:2021-08-02 08:43:01
     window_onunload在窗口刷新时也会产生,不知有没有判断是“关闭窗口”还是“刷新窗口”的方法,或者各们大哥有别的方法?

6 个解决方案

#1


自已加个 关闭窗口 按钮,把IE上的关闭给去掉

#2


但是CTRL+N,你的方法就完了

#3


agree~

example:   : http://www.microbians.com/

#4


HTTP是无连接协议, 所以当用户在client side做关闭操作时, server side不会自动的知道,同时现在的JavaScript的功能有限, 我们并不能用JavaScript判断用户做了一个关闭
窗口的操作.我看能一下原来的贴子, 发现有一篇对你可能有用:
(转载)
------------------------------------------------------------------------------ 
转贴自(忘了)

请问网易站如何判断一个用户还是否在线?(写社区时的问题)
>>>
其实网易也是拿了国外的代码来改了下就做了自己的摄取的。该代码好象在国外的网
站上有,可以找来看看就知道怎么会事了。

另外,网易判断一个用户在线与否,我想可以通过这样的法子实现。

1、登录的时候,把用户信息记录到一个表中。其中关键数据是当前登录时间。同时得
到一

个用户唯一标识的号码。

2、网易的页面不断地自动刷新。请注意页面中的:

<meta http-equiv="Refresh" 
content="20;url=http://127.0.0.1:8888/xxxx">

其中,该url应该是一个专门用来进行身份验证重新登记的地址。xxxx是和个人信息
相关

的一个字符串,就是上面说的用户唯一标识号。每次刷新,其实就是修改表中的该用
户的记

录中的当前时间为现在的时间。

3、每次操作的时候需要验证用户身份。验证用户身份的过程应该是:

A、判断此人是否用户;

B、从当前在线表中取出在线人员列表,看此人是否在列表中。如果不在,那肯定是超

时。如果在,那操作继续。如何判断超时其实就是一个如何确定在线人员列表的问
题。假设

10分钟超时,那么在线表其实就是所有符合条件:目前时间-上次登记时间<10分钟 
的所有

记录。这个上次登记时间就是在刷新页面的时候填写的时间。

4、定时清空不在线人员的记录,以保持该表的规模和提高检索效率。
------------------
还有一个
response.write "."
if response.isclientconnected then    (好象拼的不对你查一查书吧)
    do something
end if 

#5


gz

#6


to: hehongyu2000(Henry)  你的方法我想过了,不过不是很实用,这样作的东西太占资源

不过你能回答我很高兴,给你分:) 

第四点是行不通的:

因为ASP代码据我所知道的只有在两种情况下才会执行

第一是Application_onStart Application_onEnd Session_onStart Session_onEnd事件发生时才会执行,如果Session_onEnd发生,那么根本不用测试用户是否在线

第二是用户请求一个ASP文件,但如果用户请求的话,表明用户在线,如果用户不请求,那么只有Session.Timeout超时从面触发Session_onEnd事件才执行这个事件中的ASP代码,在用户最后一次请求到超时这段时间内,是没有机会测试用户是否在线的,因为没有机会执行ASP代码

这个IsClientConnected一般是在预计脚本执行时间会很长从而可能造成用户主动离开本站点,在脚本执行期间测试用户是否又有请求的动作,如果没有的话就认定用户不在线

这是window2000自带的IIS帮助文件里的关于IsClientConnected的描述:

IsClientConnected
The IsClientConnected property is a read-only property that indicates if the client has disconnected from the server.

Syntax
Response.IsClientConnected ( )

 

Remarks
This property allows you greater control over circumstances where the client may have disconnected from the server. For example, if a long period of time has elapsed between when a client request was made and when the server responded, it may be beneficial to make sure the client is still connected before continuing to process the script.

Example
<% 
  'Check to see if the client is connected.
  If Not Response.IsClientConnected Then 
    'Get the sessionid to send to the shutdown function.
    Shutdownid = Session.SessionID
  'Perform shutdown processing.
    Shutdown(Shutdownid) 
  End If
%>

Applies To
Response Object



#1


自已加个 关闭窗口 按钮,把IE上的关闭给去掉

#2


但是CTRL+N,你的方法就完了

#3


agree~

example:   : http://www.microbians.com/

#4


HTTP是无连接协议, 所以当用户在client side做关闭操作时, server side不会自动的知道,同时现在的JavaScript的功能有限, 我们并不能用JavaScript判断用户做了一个关闭
窗口的操作.我看能一下原来的贴子, 发现有一篇对你可能有用:
(转载)
------------------------------------------------------------------------------ 
转贴自(忘了)

请问网易站如何判断一个用户还是否在线?(写社区时的问题)
>>>
其实网易也是拿了国外的代码来改了下就做了自己的摄取的。该代码好象在国外的网
站上有,可以找来看看就知道怎么会事了。

另外,网易判断一个用户在线与否,我想可以通过这样的法子实现。

1、登录的时候,把用户信息记录到一个表中。其中关键数据是当前登录时间。同时得
到一

个用户唯一标识的号码。

2、网易的页面不断地自动刷新。请注意页面中的:

<meta http-equiv="Refresh" 
content="20;url=http://127.0.0.1:8888/xxxx">

其中,该url应该是一个专门用来进行身份验证重新登记的地址。xxxx是和个人信息
相关

的一个字符串,就是上面说的用户唯一标识号。每次刷新,其实就是修改表中的该用
户的记

录中的当前时间为现在的时间。

3、每次操作的时候需要验证用户身份。验证用户身份的过程应该是:

A、判断此人是否用户;

B、从当前在线表中取出在线人员列表,看此人是否在列表中。如果不在,那肯定是超

时。如果在,那操作继续。如何判断超时其实就是一个如何确定在线人员列表的问
题。假设

10分钟超时,那么在线表其实就是所有符合条件:目前时间-上次登记时间<10分钟 
的所有

记录。这个上次登记时间就是在刷新页面的时候填写的时间。

4、定时清空不在线人员的记录,以保持该表的规模和提高检索效率。
------------------
还有一个
response.write "."
if response.isclientconnected then    (好象拼的不对你查一查书吧)
    do something
end if 

#5


gz

#6


to: hehongyu2000(Henry)  你的方法我想过了,不过不是很实用,这样作的东西太占资源

不过你能回答我很高兴,给你分:) 

第四点是行不通的:

因为ASP代码据我所知道的只有在两种情况下才会执行

第一是Application_onStart Application_onEnd Session_onStart Session_onEnd事件发生时才会执行,如果Session_onEnd发生,那么根本不用测试用户是否在线

第二是用户请求一个ASP文件,但如果用户请求的话,表明用户在线,如果用户不请求,那么只有Session.Timeout超时从面触发Session_onEnd事件才执行这个事件中的ASP代码,在用户最后一次请求到超时这段时间内,是没有机会测试用户是否在线的,因为没有机会执行ASP代码

这个IsClientConnected一般是在预计脚本执行时间会很长从而可能造成用户主动离开本站点,在脚本执行期间测试用户是否又有请求的动作,如果没有的话就认定用户不在线

这是window2000自带的IIS帮助文件里的关于IsClientConnected的描述:

IsClientConnected
The IsClientConnected property is a read-only property that indicates if the client has disconnected from the server.

Syntax
Response.IsClientConnected ( )

 

Remarks
This property allows you greater control over circumstances where the client may have disconnected from the server. For example, if a long period of time has elapsed between when a client request was made and when the server responded, it may be beneficial to make sure the client is still connected before continuing to process the script.

Example
<% 
  'Check to see if the client is connected.
  If Not Response.IsClientConnected Then 
    'Get the sessionid to send to the shutdown function.
    Shutdownid = Session.SessionID
  'Perform shutdown processing.
    Shutdown(Shutdownid) 
  End If
%>

Applies To
Response Object