Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一段时间后自动关闭窗口_Php_Javascript - Fatal编程技术网

Php 一段时间后自动关闭窗口

Php 一段时间后自动关闭窗口,php,javascript,Php,Javascript,我想在5分钟后自动关闭一个窗口。我尝试过PHP和Javascript。但问题是当弹出窗口重新加载时,计数器再次从0开始。简言之,我想在5分钟后关闭弹出窗口,但仍在重新加载时关闭。使用javascript在窗口加载时调用以下函数: setTimeout(function() { window.close(); }, 300000); 这应该是可行的。如果弹出窗口从不同的域obv加载页面,这将不起作用。类似这样的内容-请注意,您只能关闭使用脚本打开的窗口 <?PHP // set this

我想在5分钟后自动关闭一个窗口。我尝试过PHP和Javascript。但问题是当弹出窗口重新加载时,计数器再次从0开始。简言之,我想在5分钟后关闭弹出窗口,但仍在重新加载时关闭。

使用javascript在窗口加载时调用以下函数:

setTimeout(function() { window.close(); }, 300000);

这应该是可行的。如果弹出窗口从不同的域obv加载页面,这将不起作用。

类似这样的内容-请注意,您只能关闭使用脚本打开的窗口

<?PHP
 // set this on session start
 $sessionStartTimeString = date("F j, Y, g:i a");
?>
window.onload=function() {
  var serverTime = new Date('<?php echo $sessionStartTimeString ;?>');
  var nowTime = new Date('<?php echo date("F j, Y, g:i a");?>');
  var closeTime = serverTime.setMinutes(serverTime.getMinutes()+5);
  var diff = closeTime.getTime()-nowTime.getTime();
  if (diff > 0) setTimeout(function() { window.close(); }, diff);
  else window.close()
}

window.onload=function(){
var serverTime=新日期(“”);
var nowTime=新日期(“”);
var closeTime=serverTime.setMinutes(serverTime.getMinutes()+5);
var diff=closeTime.getTime()-nowTime.getTime();
if(diff>0)setTimeout(函数(){window.close();},diff);
else窗口。关闭()
}

这不是一种“好方法”,但是如果您的页面必须重新加载,您可以设置并存储一个时间,以便在cookie中关闭弹出窗口。如果已经设置了cookie,只需启动计时器(检查时间是否已过的间隔?),如果尚未设置,则将其设置为5分钟内的时间,最后在关闭弹出窗口时将其删除。

setTimeout(“window.close();”,3000)

向我们展示一些代码:D-最好是带有计时器的部分和完成关闭的部分如果页面被重新加载,您必须将传递的时间作为GET或POST参数传递使用
,这样主页就可以通过JavaScript保持持久性,iframe就可以安全地重新加载。或者存储一个cookie,其时间以页面首次加载时的毫秒为单位。或者在会话变量中设置时间,但这在刷新时不起作用,因为超时将被释放并重新设置。好的,你说得对,那么最好的方法就是节省服务器端剩余的时间,并通过Ajax不时地查询它。如何使用ExtJS4做到这一点?为什么要复制窗口对象?为什么是家长?@mplungjan:我刚刚意识到,应该是
的开场白
。复制窗口对象只是为了方便。@jAndy-所以我们只需要关闭父窗口,超时就会消失。你还需要问一下(foo&&!foo.closed())@mplungjan:不知道你在说什么,如果我们关闭父窗口,弹出窗口也会关闭。我很确定一个打开窗口在关闭时会关闭所有打开的“子”窗口。教程让使用cookie变得非常简单。()我更喜欢cookie而不是会话变量,这样做可以独立于服务器,允许在非php应用程序中重用脚本
<?PHP
 // set this on session start
 $sessionStartTimeString = date("F j, Y, g:i a");
?>
window.onload=function() {
  var serverTime = new Date('<?php echo $sessionStartTimeString ;?>');
  var nowTime = new Date('<?php echo date("F j, Y, g:i a");?>');
  var closeTime = serverTime.setMinutes(serverTime.getMinutes()+5);
  var diff = closeTime.getTime()-nowTime.getTime();
  if (diff > 0) setTimeout(function() { window.close(); }, diff);
  else window.close()
}