1

我正在为我为 xhtml 页面制作的 javascript 编写一些建议。我让它主要在 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>

只是想知道如何解决这个问题,任何建议都非常感谢,谢谢。

4

2 回答 2

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>
于 2012-09-21T13:06:09.447 回答
2

提交表单时,您可以从窗口中删除 onBeforeUnload 侦听器

例如,如果您使用 id="form1" 提交表单,那么您可以添加此代码。

    document.getElementById('form1').onsubmit = function(){
        window.onbeforeunload=function(){};
    }
于 2012-09-21T13:23:11.590 回答