js阻止页面刷新

JavaScript06

js阻止页面刷新,第1张

网页中用户的表单填写到一半,或者ajax请求发送期间,如果用户刷新浏览器可能会导致数据保存失败。需要阻止页面刷新,这时可以通过监听页面window.onbeforeunload事件函数来处理。

window.onbeforeunload = function(e) {

var dialogText = 'Dialog text here'

e.returnValue = dialogText

return dialogText

}

不过chrome不支持自定义显示文字,固定为

“要重新加载该网站吗?

系统可能不会保存您所做的修改”

而firefox和safari就会正常使用return value里面的文字

参考:

-- https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Browser_compatibility

倒计时可以用js的setTimeout来控制

http://www.tocus.com.cn/?send=article_show&id=34&class=2

可以循环计时,而对于页面刷新,我们可以屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键来达到效果

<script>

//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键

function document.oncontextmenu(){event.returnValue=false}//屏蔽鼠标右键

function window.onhelp(){return false} //屏蔽F1帮助

function document.onkeydown(){

if((window.event.altKey)&&((window.event.keyCode==37)||(window.event.keyCode==39))){

//屏蔽Alt+方向键←

//屏蔽Alt+方向键→

event.returnValue=false

}

if((event.keyCode==8)||(event.keyCode==116)||(event.ctrlKey &&event.keyCode==82)){

//屏蔽退格删除键

//屏蔽F5刷新键

//Ctrl+R

event.keyCode=0

event.returnValue=false

}

if(event.keyCode==122){event.keyCode=0event.returnValue=false}//屏蔽F11

if(event.ctrlKey &&event.keyCode==78)event.returnValue=false //屏蔽Ctrl+n

if(event.shiftKey &&event.keyCode==121)event.returnValue=false //屏蔽shift+F10

if(window.event.srcElement.tagName=="A" &&window.event.shiftKey)

window.event.returnValue=false //屏蔽shift加鼠标左键新开一网页

if((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4

window.showModelessDialog("about:blank","","dialogWidth:1pxdialogheight:1px")

return false

}

}

</script>

第一种方法:

<script

language="”javascript”">

var

checkSubmitFlg

=

false

function

checkSubmit(){

if(checkSubmitFlg

==true){

return

false

//当表单被提交过一次后checkSubmitFlg将变为true,根据判断将无法进行提交。

}

checkSubmitFlg

==true

return

true

}

<

/script

>

<

form

name=”form1”

method=”post”

onsubmit=”return

checkSubmit()”>

………..<

/form>

第二种方法:

在onsubmit事件中设置,在第一次提交后使提交按钮失效,代码如下:

<form

action=”about:blank”

method=”post”

onsubmit

=”getElementById(‘submitInput').disabled=truereturn

true”

target=”_blank”>

<input

type=”submit”

id=”submitInput”/>

</form>

<script

Language='JavaScript'>

function

formsubmit()

{

Today

=

new

Date()

var

NowHour

=

Today.getHours()

var

NowMinute

=

Today.getMinutes()

var

NowSecond

=

Today.getSeconds()

var

mysec

=

(NowHour*3600)+(NowMinute*60)+NowSecond

if((mysec-document.formsubmitf.mypretime.value)>600)

//600只是一个时间值,就是5分钟内禁止重复提交,值随你高兴设

{

document.formsubmitf.mypretime.value=mysec

}

else

{

alert('

按一次就够了,请勿重复提交!请耐心等待!谢谢合作!')

return

false

}

document.forms.formsubmitf.submit()

}

</script>

</HEAD>

<BODY

BGCOLOR="#FFFFFF">

<form

name=formsubmitf

id

="the"

method="post"

action="XXX.asp">

<input

type=hidden

name='mypretime'

value='0'>

//这句不能少,用隐含变量传递一个时间初值

//这里是你要提交的内容

<input

type="button"

value="写好了"

name="button1"

class="4round"

onclick='formsubmit()'>

<font

class="red">(请按一次,耐心等待!)</font>

<input

type="reset"

value="重

写"

name="button2"

class="4round">

</form>

望采纳!