.net 或者 js 如何禁止页面刷新 ? 如果用 window.onbeforeunload 如何得到所选是“离开此页面”,

 我来答
百度网友66a8d48e5
2013-04-27 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3899万
展开全部
首先告诉你,刷新是客户浏览器行为。

其实告诉你,刷新其实就是再次请求——如果不考虑登陆状态控件状态的话,它与请求是没有区别的。

服务器显然不能控制浏览行为,不管是那种状态,都是能过js代码进行伪控制。就象不能控件用户在什么时间请求一样,除非不能请求。

换号话来说,刷新只是浏览器重发了一次请求,在IIS看来很正常的请求。最常用的就是在onbeforeunload事件中通知该请求是一次刷新——就算是转向其他页面(毫无关系的网站)也是要触发这个事件的,所以基本上是没有办法控制的。

不知道你设计的真正意图——为什么不考虑按钮事件呢?刷新是随便的,但是某些不到时间的你就没有办法进行增加不就可以了?我怀疑在你设计时就已经考虑错方向了!
追问
我的数据是随机取出来的,再刷新的时候就会重新加载一遍,无法保证跟上一次数据是一致的,我的目的就是想让页面在某个时间段内数据不变
追答
很抱歉地告诉你,刷新就是一次新的请求。

解决这个问题,你可以考试使用cookie写入到本机中,无论是再刷新再请求,在时间未过期之间,不再随机即可。

当然如果使用控件状态记录也是可行了。将机器在记录到session中,生成时即给定一个session值,这样可可望而不可及保证这个session值不会变化,然后,如果发现其他在一定时间同的刷新,则不必须再随机赋值即可。

也就是说解决这个问题也有多种方案——试想一下,那个一个验证码不是随机的?为什么还可以验证——刷新本质就是再请求而已。

这样完全可以休证页面在一定的时间内不会变化。也是就是说你的随机值必须记录起来,然后如果发现在一定时间内不去重新加载随机值即可。

顺便告诉你一个问题——页面也是离散的,两次请求之间,若非浏览器主动携带cookie或session情况下,无法区分两次请求之间的关系的。

妄想用刷新来避免重新生成值——本来我们设计原则就是,不要相信任何客户端上传的数据。你还将数据让客户端单方面保存?!

我再次告诉你——你的设计方向已经错了!想想人家验证码是怎么实现的,然后又是如何清除的——你不会不知道吧?你这种设计绝不能称一个合适的设计师的。
liu_sl2005
2013-04-27 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:85.4万
展开全部
window.onbeforeunload = function () {
return false;
};
更多追问追答
追问

这样还是可以刷新的,只不过是return 返回值变为flase,点击离开此页面的时候还是刷新了

追答
禁止所有,像F5,等键盘输入性刷新,可以吗?
以及包括禁用鼠标右键刷新,这些可以吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传奇勇者
2013-04-27 · TA获得超过747个赞
知道大有可为答主
回答量:1706
采纳率:75%
帮助的人:811万
展开全部
严格来说,你是不能禁止页面刷新的,但是你可以用js弹出窗口的方式,限制弹出窗口不能刷新,这种方式也其实是伪禁止,刷新主页面就全变了。
追问
那就是没办法控制了?如果用伪禁止的话,有没有办法禁止页面刷新,只要保证我的数据不会变化就行了
追答
因为浏览器是客户自己的,他想刷新你是没办法控制的,绝对控制的思想本身就是错误的。
但是你可以做到如果他刷新的话,就要从头登陆开始,这样来保证你的数据在业务期间不会变化就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚂蚁棚
2013-04-27 · TA获得超过138个赞
知道答主
回答量:200
采纳率:0%
帮助的人:130万
展开全部
设置页面过期时间为立即过期不行么?<meta http-equiv="expires" content="0" />
追问
我需要有一定   的时间限制,在这个时间段内页面不刷新
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式