繁体   English   中英

我可以覆盖window.onbeforeunload吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM