本文主要是介绍勿在重定向的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('关闭');}
这篇关于勿在重定向的href中定义onclick事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!