Php 如何结合内容处置:附件临时停用onbeforeunload邮件?
我有一个页面Php 如何结合内容处置:附件临时停用onbeforeunload邮件?,php,javascript,attachment,onbeforeunload,content-disposition,Php,Javascript,Attachment,Onbeforeunload,Content Disposition,我有一个页面insert.php,用户可以在其中输入表单 我使用javascript通知用户当页面关闭时可能会丢失插入的数据 <script language="JavaScript"> var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if ( needToConfirm ) return "Thi
insert.php
,用户可以在其中输入表单
我使用javascript通知用户当页面关闭时可能会丢失插入的数据
<script language="JavaScript">
var needToConfirm = true;
window.onbeforeunload = confirmExit;
function confirmExit() {
if ( needToConfirm )
return "This page is asking you to confirm that you want to leave - data you have entered may not be saved.";
}
</script>
在save.php
中,我执行以下操作:
session_start();
header( 'Content-disposition: attachment; filename=download.dat' );
... echo $_SESSION-data ...
这将下载插入的数据,而不关闭已加载的insert.php
问题在于javascriptneedToConfirm
-变量保持为false
。因此,当我在点击下载后关闭页面时(即使用户未确认下载),不会再显示任何警告,数据可能会丢失
对于如何解决这个问题的任何想法,我们都非常感激
(我猜问题与
insert.php
由于另一个页面的加载而没有完全重新加载有关…您需要设置一个计时器,在超时后,将该值再次重置为true(您不必使用大于100ms的值)
把它放进碗里
因此,当有内容要显示时,页面会自动重新加载,但当只有附件时,计时器就会启动谢谢。就我所能测试的范围而言,这是可行的。设置计时器似乎有点奇怪。。。但实际上,这可能是完美的。只要是这样,我就不会真的抱怨。
session_start();
... store $_POST in $_SESSION ...
Header( 'HTTP/1.1 301 Moved Permanently');
Header($'Location: save.php');
session_start();
header( 'Content-disposition: attachment; filename=download.dat' );
... echo $_SESSION-data ...
window.setTimeout('needToConfirm=true', 100);