在IE中提交表单时,Javascript,onbeforeunload事件有效

时间:2012-09-21 12:58:35

标签: javascript

我正在写一些关于我为xhtml页面制作的javascript的adivce。我得到它主要是在IE,FF和Chrome上工作(Safari仍然给我一些悲伤,但那是另一个主题。)我遇到的问题是IE会运行beforeunload事件,即使有人提交的表格不是我的东西希望发生因为beforeunload脚本会导致信息被重置。当我按下F5时,它甚至会这样做,这也不是我想要的。现在FF和Chrome在提交表单时没有遇到这个问题但不知道为什么。这是我到目前为止编写的代码。

<script type="text/javascript"> 
window.onbeforeunload = function() {
var hiddenBtn = document.getElementById("kioskform:broswerCloseSubmit");
return  hiddenBtn.click();
           }   </script>

只是想知道如何去做任何建议非常感谢谢谢。

2 个答案:

答案 0 :(得分:3)

定义一个html隐藏变量。为用户提交表单时指定值。然后在卸载函数中,检查隐藏变量。如果它填充了任何值,则保留该功能。

<script type="text/javascript"> 
 window.onbeforeunload = function() {
  if (document.getElementById("wasformsubmitted").value != "Y") {
    var hiddenBtn = document.getElementById("kioskform:broswerCloseSubmit");
    return  hiddenBtn.click();
  }
}   
function SetSubmitVariables()
{
 document.getElementById("wasformsubmitted").value = "Y";
 return true;
}
</script>
<body>
  <form ... onsubmit="return SetSubmitVariables();">
    <input type="hidden" id="wasformsubmitted" value="N" />
    ... 
  </form>
</body>

答案 1 :(得分:2)

您可以在提交表单

时从窗口中删除onBeforeUnload侦听器

E.g。如果您提交id =“form1”的表单,则可以添加此代码。

    document.getElementById('form1').onsubmit = function(){
        window.onbeforeunload=function(){};
    }