我似乎有问题使用onbeforeunload事件来警告用户,如果他们从未保存的表单数据导航离开页面。我写了一个最小的页面,但仍然不起作用。如果我正在导航或重新加载页面,此页面有时会提醒我,但有时不会,并且我看不到原因。有时它会问我什么时候没有改变表单的值。我看过其他问题,据我所知,我所做的是对的。我究竟做错了什么?JavaScript中onbeforeunload不起作用
<html>
<body>
<script>
window.onload = function() { doRecord(); };
window.onbeforeunload = function() { return doCheck(); };
setTimeout(doCheck, 5000);;
var storeValue = "";
function doRecord()
{
var inp = document.getElementById("theinput");
storeValue = inp.value;
console.log("Running doRecording");
}
function doCheck()
{
console.log("Running doCheck");
var inp = document.getElementById("theinput");
console.log("Comparing '" + storeValue + "' to '" + inp.value + "'");
if (storeValue != inp.value)
{
console.log("It has changed");
return "Are you sure that you want to leave this page, value has changed";
}
else
{
console.log("It's OK");
return null;
}
}
</script>
<h3>Form</h3>
<form id="myform" method="post" action="process.php" onsubmit="window.onbeforeunload = null" >
<input type="text" size="20" name="sometext" id="theinput" value="Change This" />
<p>
<input type=submit />
</form>
</body>
</html>
仅当您的输入为空时才会显示警告? –
window.onload会等待图像和其他资源(如外部CSS和JS)完全加载。你可能在onload被触发之前开始编辑,所以你的更新值被存储在storeValue中。 console.log说什么? – jedifans
您的代码正常工作 – Abanoub