[英]Can I override window.onbeforeunload?
现在,我的window.onbeforeunload进程可以正常工作,当用户使用我提供的按钮时,我不希望它触发:
<asp:Button ID="btnSaveResponses" runat="server" Text="Save" onclick="btnSaveResponses_Click" />
<asp:Button ID="btnFinished" runat="server" Text="Finished" onclick="btnFinshed_Click" CausesValidation="False" />
如果用户单击其中任何一个,则不希望触发window.onbeforeunload过程。
这是该过程:
<script language="javascript" type="text/javascript">
window.onbeforeunload = function (e) {
var element1 = document.getElementById('btnFinished');
if (element1 != null) {
//code to set the value variable.
document.getElementById('btnFinished').click();
}
else {
alert("element is null");
}
return false;
};
</script>
我在页面底部添加了这两个函数:
<script language="javascript" type="text/javascript">
function setDoNotFire
{
var doNotFire=true;
};
</script>
<script language="javascript" type="text/javascript">
function Fire
{
var doNotFire=false;
};
</script>
加上这个:
<body onload ="Fire()">
和这个:
<asp:Button ID="btnSaveResponses" runat="server" Text="Save" onclick="btnSaveResponses_Click" OnClientClick ="setDoNotFire()"/>
<asp:Button ID="btnFinished" runat="server" Text="Finished" onclick="btnFinshed_Click" CausesValidation="False" OnClientClick ="setDoNotFire()"/>
最后:
<script language="javascript" type="text/javascript">
window.onbeforeunload = function (e) {
if (doNotFire!=true) {
var element1 = document.getElementById('btnFinished');
if (element1 != null) {
//code to set the value variable.
document.getElementById('btnFinished').click();
}
else {
alert("element is null");
}
return false;
}
};
</script>
它根本没有用。 它不再执行任何操作,因此我猜测它找不到变量doNotFire。
无需重写它,只需使现有的文件更灵活即可。 声明一个全局变量doNotFire =false
。 单击按钮时,将变量设置为true。 在您的onBeforeUnload
代码中,检查doNotFire
是否为false。
<html>
<head>
<script type="text/javascript">
doNotFire = false;
function doSomething(){
if (!doNotFire){
....
}
</script>
</head>
<body onbeforeunload="doSomething();">
...
<asp:Button ID="btnSaveResponses" runat="server" Text="Save" onclick="doNotFiretrue;btnSaveResponses_Click();" />
<asp:Button ID="btnFinished" runat="server" Text="Finished" onclick="doNotFiretrue; btnFinshed_Click();" CausesValidation="False" />
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.