我正在写一些关于我为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>
只是想知道如何去做任何建议非常感谢谢谢。
答案 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(){};
}