.net 或者 js 如何禁止页面刷新 ? 如果用 window.onbeforeunload 如何得到所选是“离开此页面”,
4个回答
展开全部
首先告诉你,刷新是客户浏览器行为。
其实告诉你,刷新其实就是再次请求——如果不考虑登陆状态控件状态的话,它与请求是没有区别的。
服务器显然不能控制浏览行为,不管是那种状态,都是能过js代码进行伪控制。就象不能控件用户在什么时间请求一样,除非不能请求。
换号话来说,刷新只是浏览器重发了一次请求,在IIS看来很正常的请求。最常用的就是在onbeforeunload事件中通知该请求是一次刷新——就算是转向其他页面(毫无关系的网站)也是要触发这个事件的,所以基本上是没有办法控制的。
不知道你设计的真正意图——为什么不考虑按钮事件呢?刷新是随便的,但是某些不到时间的你就没有办法进行增加不就可以了?我怀疑在你设计时就已经考虑错方向了!
其实告诉你,刷新其实就是再次请求——如果不考虑登陆状态控件状态的话,它与请求是没有区别的。
服务器显然不能控制浏览行为,不管是那种状态,都是能过js代码进行伪控制。就象不能控件用户在什么时间请求一样,除非不能请求。
换号话来说,刷新只是浏览器重发了一次请求,在IIS看来很正常的请求。最常用的就是在onbeforeunload事件中通知该请求是一次刷新——就算是转向其他页面(毫无关系的网站)也是要触发这个事件的,所以基本上是没有办法控制的。
不知道你设计的真正意图——为什么不考虑按钮事件呢?刷新是随便的,但是某些不到时间的你就没有办法进行增加不就可以了?我怀疑在你设计时就已经考虑错方向了!
追问
我的数据是随机取出来的,再刷新的时候就会重新加载一遍,无法保证跟上一次数据是一致的,我的目的就是想让页面在某个时间段内数据不变
追答
很抱歉地告诉你,刷新就是一次新的请求。
解决这个问题,你可以考试使用cookie写入到本机中,无论是再刷新再请求,在时间未过期之间,不再随机即可。
当然如果使用控件状态记录也是可行了。将机器在记录到session中,生成时即给定一个session值,这样可可望而不可及保证这个session值不会变化,然后,如果发现其他在一定时间同的刷新,则不必须再随机赋值即可。
也就是说解决这个问题也有多种方案——试想一下,那个一个验证码不是随机的?为什么还可以验证——刷新本质就是再请求而已。
这样完全可以休证页面在一定的时间内不会变化。也是就是说你的随机值必须记录起来,然后如果发现在一定时间内不去重新加载随机值即可。
顺便告诉你一个问题——页面也是离散的,两次请求之间,若非浏览器主动携带cookie或session情况下,无法区分两次请求之间的关系的。
妄想用刷新来避免重新生成值——本来我们设计原则就是,不要相信任何客户端上传的数据。你还将数据让客户端单方面保存?!
我再次告诉你——你的设计方向已经错了!想想人家验证码是怎么实现的,然后又是如何清除的——你不会不知道吧?你这种设计绝不能称一个合适的设计师的。
展开全部
严格来说,你是不能禁止页面刷新的,但是你可以用js弹出窗口的方式,限制弹出窗口不能刷新,这种方式也其实是伪禁止,刷新主页面就全变了。
追问
那就是没办法控制了?如果用伪禁止的话,有没有办法禁止页面刷新,只要保证我的数据不会变化就行了
追答
因为浏览器是客户自己的,他想刷新你是没办法控制的,绝对控制的思想本身就是错误的。
但是你可以做到如果他刷新的话,就要从头登陆开始,这样来保证你的数据在业务期间不会变化就行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置页面过期时间为立即过期不行么?<meta http-equiv="expires" content="0" />
追问
我需要有一定 的时间限制,在这个时间段内页面不刷新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询