我似乎有問題使用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