当前位置:编程学习 > C#/ASP.NET >>

如何判断用户进入了其他页面或点击了右上角的关闭按钮退出呢?

现在在做文件占用的功能,用户进入页面后,就设文件占用标记为1,其他用户只能浏览。(只对一个页面进行锁定)
现在的问题是:如果用户进入其他页面,或者点击了右上角的关闭按钮退出,我怎样判断这种情况而将文件占用标记设回0呢?
代码应该怎么设计?希望各位不吝赐教 --------------------编程问答-------------------- 这么苛刻的功能,该用C/S来做了。。。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 实时性要求不高的话,放在一个FrasetSet中;
再整个页面定时去更新数据库信息 --------------------编程问答-------------------- SQL那边设定个触发器,15秒后自动修改值为0
页面10秒刷新一次,打开的话就再修改为1,重新触发 触发器 --------------------编程问答-------------------- 页面每10秒刷新,服务器端做超时判断。 --------------------编程问答-------------------- 浏览器中的页面关闭是判断不了的,只能通过超时来判断 --------------------编程问答-------------------- 没有那个事件~~ --------------------编程问答-------------------- <body onunload=""> --------------------编程问答-------------------- 服务端用override void OnUnLoad(EventArgs e) --------------------编程问答-------------------- 用FrameSet+自动刷新/cookie可以 --------------------编程问答-------------------- 还没解决,自己顶一下 --------------------编程问答-------------------- 窗口失去焦点,应该是与你的“用户进入其它页面”的意思一样吧
    <script type="text/javascript">
    window.onblur=function(){alert("窗口失去焦点");}
    </script>

窗口关闭事件
    <script type="text/javascript">
    function window.onbeforeunload() {
        alert("窗口即将关闭");
    }
    </script>
--------------------编程问答-------------------- 以前参与过一个类似问题帖子的讨论,基本上实时性要求不高就用session控制.如果实时性要求高,就需要前台页面定时向服务器发送自己的状态, 最好使用ajax定时访问一下后台. 后台如果在一段时间没有接到状态报告,即可认为用户已经关闭窗口了.至于间隔的时间就需要好好考虑一下了. --------------------编程问答--------------------
onunload="JS_PopUpWindow();"

在页面的unload事件中,触发一个Javascript函数,弹出一个页面,该页面中执行一段后台代码,去数据库中解锁,然后自己关闭
--------------------编程问答--------------------
我说的可能是最可行的方法了,你可以看看微软的网站,有这种功能需要的地方都是这样处理的

我们自己的系统也是这样处理的 --------------------编程问答--------------------
别忘了控制一下弹出页面的大小及位置 --------------------编程问答-------------------- 无论如何最终还是要通过c/s的模式 --------------------编程问答-------------------- 那你看看能不能通过js控制关闭,那样就很容易控制了。 --------------------编程问答-------------------- JS onbeforeonload 事件。

onunload="JS_PopUpWindow();"

在页面的unload事件中,触发一个Javascript函数,弹出一个页面,该页面中执行一段后台代码,去数据库中解锁,然后自己关闭 
-----------------------------
胖猫的这个方法是可行的。 --------------------编程问答-------------------- 其他的方法,貌似都不如胖猫的这个方法,我也是用这个实现的。 --------------------编程问答-------------------- 多谢各位高手,我用竹子和胖猫方法的结合
onbeforeunload(),然后例会js函数调用后台方法解锁
用户退出的问题解决了。
可是现在还有一种情况,就是session超时,锁还在
因为不知道在asp.net里session超时代码是怎么做的,
各位能稍微详细点指点下我session超时的处理方法吗?
查了下资料是不是要弄个sessionlistener?

迟点散分,谢了~ --------------------编程问答--------------------
用ASP.NET Ajax,做一个计数器,每隔一段时间向服务器端Postback 一下,彻底解决了Session过期的问题~~

呵呵~~ --------------------编程问答--------------------
说错了,不是计数器,是ASP.NET Ajax自带的Timer --------------------编程问答-------------------- 胖猫,我这边还不能用ajax哦(公司或版权问题,我也不知道)
介绍个其他方法给我吧? --------------------编程问答-------------------- 建个表,存放用户的ID和行为 点了那个Button 回传事件里写入表 搞定 --------------------编程问答--------------------
啊?~ASP.NET Ajax是微软的免费组件啊。。~~呵呵 --------------------编程问答-------------------- 使用ajax,在body的unload事件中调用ajax的函数 就会实现关闭X时可以控制 数据刷新 --------------------编程问答-------------------- 肥猫,能贴点代码看看怎么做的吗?
另外,
之前看到一篇用xmlhttp的文章,有点疑惑那个监听页面是不是要一直开着 --------------------编程问答-------------------- 帮顶! --------------------编程问答-------------------- 我用session_end,而且设置session有效时间为1分钟,如下
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="1"/>
但是session_end怎么都不触发。
就算我主动调用session.abandon()也不跳到session_end里去,怎么解决呢? --------------------编程问答-------------------- 帮顶. --------------------编程问答-------------------- session_end是表示会话结束,才会执行的事件;

肥猫,能贴点代码看看怎么做的吗? 
另外, 
之前看到一篇用xmlhttp的文章,有点疑惑那个监听页面是不是要一直开着

ajax请求的页面不用一直开着,它只是一个最简单的get或post请求而已;
你可以看看www.26abc.net是我开发的一个视频聊天的网站;就是这么做的
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,