当用户想要 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);
这没有做任何有用的事情,但您会看到它会创建文件并写入文件。
我在我的网站上设计了一个表单。 我的表格有一个提交计时器。 我的问题是:如果用户决定离开页面并且不想再提交表单,有没有办法在 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);
这没有做任何有用的事情,但您会看到它会创建文件并写入文件。