勿在重定向的href中定义onclick事件

       事情时忙时停,单点登录大致算完成了。不过有个问题不断的蹦出来,是由于客户端的问题导致。
      需求是这样的:一个用户同一时间只能在一个地方登录,如果用户已经在线,则拒绝所有后面的登录。
   “在线”可以用日志System_Event来标识,惟一的入口是“用户登录”事件;而“不在线”这个状态则可能由三种事件引发:1.用户通过“注销”入口正常退出;2.操作过时Session自动注销;3.关闭浏览器等同于“注销”
      前两个容易解决,配置一个SessionListener,在sessionDestroyed接口中加上setUserOffline()方法,在事件1中只要调session.invalidate()即可,这个方法对于注销是最省事的了,不需逐个对session变量removeAttribute,不过最好是try{}catch(e){}一把。
      接下来的问题是事件3,它需要监测用户点击“关闭×”这个按钮,在不使用全屏改变Browser外观情况下,只有window.onUnload这个事件,这就需要区分是flush和close的情况了。不幸的是,目前知道两种方法的event.clientY和screenLeft经实践证明都不能很好的兼容各种浏览器!!问题在于,我牺牲了刷新的前题下,有些客户端在点击“×”时还不能确保会运行unload事件,而且怪的是,刚登录时关闭页面似乎会执行,而隔一段时间(大致是20~分钟)又不灵了。unLoad中试过几种方法,按效果从好到坏排列是:Ajax提交、window.showModalDialog、window.location=、window.open。
      还有一个问题,平时不太会注意,通常我们希望在点链接的时候再执行某些js操作。但是,发生这两件事的顺序在不同的浏览器之间又表现不同,究竟是先重定位还是先onclick呢?最好的办法是将href设为'#',然后将重定位的操作也包含在onclick中。
if (event.clientX<=0 && event.clientY<0){}
var s="close"; if(s=="fresh") if (window.screenLeft>10000){alert('关闭');}else{alert('刷新');}else{ alert('关闭');}
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值