首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 浏览器关闭前服务器如何获知 [已结贴,结贴人:zuoyl520]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zuoyl520
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 00:56:31 楼主
    当用户点击浏览器右上角的“关闭”按钮时,
    如何在第一时间将关闭信息提交给服务器获知。
    服务器可进行一些操作,比如打印一个log信息等。

    希望能给个好的思路或灵感,
    在下将不胜感激。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Gump09
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 08:15:551楼 得分:5
    鉴于http为无状态协议,浏览器的关闭原则上服务器是不能获知的。
    不知道楼主为什么一定要获知,描述一下需求或许对你的问题解决有帮助。
    比如如果你想在关闭某个叶面时解锁,那么在关闭时可以用js提示一下,
    也可以直接发解锁请求。
    单纯所有叶面都要处理的情况我认为是没有的。
    log信息一般也不需要记录这些
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • For_suzhen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 08:22:292楼 得分:0
    可以用onunload的事件吧。不过能不能提交到后台,需要验证一下,另外要排除刷新的情况。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Landor2004
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-20 09:02:273楼 得分:0
    HTML code
    <HTML> <HEAD> <TITLE>xxx</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK"> <script> //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈 function exitSystem(){ alert("确认关闭xxx系统吗"); //location.href="xxx.do";//此处注释掉了,根据具体情况修改 } </script> </HEAD> <BODY onbeforeunload="exitSystem()"> 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 </BODY> </HTML>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • net_lover
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      3

    发表于:2008-08-20 09:05:474楼 得分:0
    没有100%成功的办法。所以不要通过这个方法做关键性的任务
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dadi5566
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 09:43:325楼 得分:0
    HTML code <HTML>
    <HEAD>
    <TITLE>xxx </TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK">
    <script>
      //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈
      function exitSystem(){
        var flag=confirm("确认关闭xxx系统吗");//可以判断用户选择的是什么
        if(flag)
       
        //location.href="xxx.do";//此处注释掉了,根据具体情况修改
      }
    </script>
    </HEAD>
    <BODY onbeforeunload="exitSys…
    [/Quote]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sunzhyng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:05:576楼 得分:0
    最好不用要unload事件,并不是不起作用,是并不准确,还是设置超时比较好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • norwolfli
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 10:39:087楼 得分:0
    引用 4 楼 net_lover 的回复:
    没有100%成功的办法。所以不要通过这个方法做关键性的任务
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Ami121
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 13:55:498楼 得分:0
    LZ你基本上可以放弃这个想法了
    除非你限制用户必须使用某种浏览器 如IE 那样就可以达到你的目的
    <script language=javascript> 
      function window.onbeforeunload() 
      { 
      if(event.clientX>document.body.clientWidth&&event.clientY <0||event.altKey||event.ctrlKey) 
      { 

            alert('关闭'); 
        } 
      else{ 
            alert("刷新"); 
      } 
      } 
      </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newfys
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:18:279楼 得分:0
    学习一下。这个问题。我也想解决。但是无从下手。
    思路就是关闭的时候弹出JS,然后根据用户选择想服务器发送信息?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • only_endure
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:16:4810楼 得分:0
    isClientConnected
    详情请看:
    http://blog.joycode.com/ghj/archive/2008/07/23/115199.aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sherry521
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:38:4511楼 得分:0
    引用 3 楼 Landor2004 的回复:
    HTML code <HTML>
    <HEAD>
    <TITLE>xxx </TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK">
    <script>
      //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈
      function exitSystem(){
        alert("确认关闭xxx系统吗");
        //location.href="xxx.do";//此处注释掉了,根据具体情况修改
      }
    </script>
    </HEAD>
    <BODY onbeforeunload="exitSys…


    在火狐和IE 6下测试了下,很管用呀。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zongjianhui
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:55:4212楼 得分:0
    引用 11 楼 sherry521 的回复:
    引用 3 楼 Landor2004 的回复:
    HTML code <HTML>
    <HEAD>
    <TITLE>xxx </TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=GBK">
    <script>
      //当点击浏览器的关闭按钮时,退出系统,并清除session,修改登陆标识,等等,当然也要排除刷新情况,哈哈
      function exitSystem(){
        alert("确认关闭xxx系统吗");
        //location.href="xxx.do";//此处注释掉了,根据具体情况修改
      }
    </scrip…
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chyx413332087
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 13:26:1213楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jianpc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 13:46:5514楼 得分:5
    万一从任务管理器中结束进程呢?或者死机重启了?呵呵。

    我觉得应当监听session,并将session的失效时间设置为适当的时间。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiao1zhao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 18:56:2715楼 得分:0
    使用网页是无法做到的,劝楼主不要测试了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bining_hb
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:33:2416楼 得分:5
    如果大家有用163的话应该有经验,每次关邮箱的时候都会弹一个广告,我估计网易是使用js做的,楼主也可以试试使用js在用户关掉网页的时候发送一个请求到服务器。但是并不如保证能够发送成功,像楼上有人说的,会有死机啦,进程结束啦,这些情况的。
    或者可以让页面每隔一小段时间给服务器发送一个请求,当超过多长时间服务器没有收到该用户的请求的时候,可以断定用户把这个网页关了。但如果这样的话,不能满足楼主说的第一时间了,不过当用户出现死机或者结束进程的话,还是可以知道网页被关了的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whatisjava_open
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 13:17:5817楼 得分:5
    提供一个安全退出按钮

    JAVA阵营    QQ群  68575630
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newfys
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:08:3518楼 得分:0
    还是没人?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newfys
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 14:09:2219楼 得分:0
    为什么.回复.不可见?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zuoyl520
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-09 23:03:4820楼 得分:0
    谢谢大家的积极发言
    你们的想法和思想
    都使我备受鼓舞
    现在问题已经解决
    就是像上面兄弟们说的
    onunlaod和onbeforeunload都不能做到
    折中的办法就是使用监听器
    并把session设置为一个适当的时间
    也许还有更好的方法
    我将在不断的探索中去发现
    希望有了真正的解决办法
    能够与大家共享
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved