当用户想要 leave/close/refresh 页面时自动提交表单

Auto submit form when user want to leave/close/refresh the page

我在我的网站上设计了一个表单。 我的表格有一个提交计时器。 我的问题是:如果用户决定离开页面并且不想再提交表单,有没有办法在 he/she leave/close/refresh 页面之前提交表单?

执行此操作以检测页面关闭:

window.onbeforeunload = closingCode;
function closingCode(){
   document.getElementById("form").submit();
   return null; //<-- this prevents the dialog confirm box
}

刷新时不会触发。您必须在 back-end 上执行此操作 - 即通过该会话/IP 地址跟踪对该页面的访问。

但是我要说的是,您的处理方式是错误的。而不是在他们离开之前尝试提交。使用阈值为表单和/或其字段提交 onChange 事件。

这是完整的例子。 HTML

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<form name="refreshForm" id="form" action="form.php">
<input type="text" name="visited" value="" />
<input type="text" value="hello" />
<input type="submit" />
</form>

<script>
window.onbeforeunload = closingCode;
function closingCode(){
   document.getElementById("form").submit();
   return null;
}
</script>
</body>
</html>

PHP (form.php)

<?php

file_put_contents('log.text', $_REQUEST);

这没有做任何有用的事情,但您会看到它会创建文件并写入文件。