我需要每8秒重新加载一次页面。它在Chrome,Firefox和Safari中运行得很好,但在IE中,它会在1到12次刷新后停止刷新。这是有问题的。
以下部分包含在文档的头部。 getScrollXY获取页面坐标,以便可以在确切的某个位置重新加载iframe。三个d变量是X值,Y值和形式。这里的PHP变量是页面的URL,很明显,根据需要进行了修改。
function unloadP(dung,dong,dang)
{
s=getScrollXY();
document.getElementById(dong).value = s[0];
document.getElementById(dang).value = s[1];
document.getElementById(dung).submit();
return false;
window.location = \"$here\";
window.location.reload(true);
}
function unloadPnow(dug,dog,dag,deg)
{
s=getScrollXY();
document.getElementById(dog).value = s[0];
document.getElementById(dag).value = s[1];
document.getElementById(dug).submit();
return false;
window.location = deg;
window.location.reload(true);
}
这就是行动实际发生的地方。
if(isset($newscroll))
{
if(count($printlast)!=0) $_SESSION['printlast']=$printlast;
$_SESSION['newscroll']="isset";
if($newscroll!="set") $here='http://127.0.0.1/dummyname.php?ord=1&mode='.$newscroll;//#duh';
if(strpos($_SERVER['HTTP_USER_AGENT'],"Safari")!==FALSE)
{
print("<body onLoad=\"setTimeout('unloadP(\'thisf\',\'scrollx\',\'scrolly\')', 100);\">
<form id=\"thisf\" method=\"post\" action=\"$here\">
<input type=\"hidden\" name=\"scrollx\" id=\"scrollx\" value=\"3\">
<input type=\"hidden\" id=\"scrolly\" name=\"scrolly\" value=\"4\"></form>");
}
else
{
print("<body onLoad=\"setTimeout('unloadP(\'thisf\',\'scrollx\',\'scrolly\')', 0);\">
<form id=\"thisf\" method=\"post\" action=\"$here\">
<input type=\"hidden\" name=\"scrollx\" id=\"scrollx\" value=\"3\">
<input type=\"hidden\" id=\"scrolly\" name=\"scrolly\" value=\"4\"></form>");
}
}
else
{
if(isset($_SESSION['printlast'])) unset($_SESSION['printlast']);
if(!isset($dontload))
{
if(isset($_POST['scrollx']))
{
print("<body onLoad=\"loadP(); setTimeout('unloadP(\'thisf\',\'scrollx\',\'scrolly\')', 8000);\">
<form id=\"thisf\" method=\"post\" action=\"$here\">
<input type=\"hidden\" name=\"scrollx\" id=\"scrollx\" value=\"3\">
<input type=\"hidden\" id=\"scrolly\" name=\"scrolly\" value=\"4\"></form>");
}
else
{
print("<body onLoad=\"window.scrollTo(0, document.body.scrollHeight); window.top.scrollTo(0,0); setTimeout('unloadP(\'thisf\',\'scrollx\',\'scrolly\')', 8000);\">
<form id=\"thisf\" method=\"post\" action=\"$here\">
<input type=\"hidden\" name=\"scrollx\" id=\"scrollx\" value=\"3\">
<input type=\"hidden\" id=\"scrolly\" name=\"scrolly\" value=\"4\"></form>");
}
}
else
{
print("<body onLoad=\"window.scrollTo(0, document.body.scrollHeight); window.top.scrollTo(0,0); setTimeout('unloadP(\'thisf\',\'scrollx\',\'scrolly\')', 8000);\">
<form id=\"thisf\" method=\"post\" action=\"$here\">
<input type=\"hidden\" name=\"scrollx\" id=\"scrollx\" value=\"3\">
<input type=\"hidden\" id=\"scrolly\" name=\"scrolly\" value=\"4\"></form>");
}
}
感谢您的时间。
编辑:正如第一条评论建议,我尝试设置缓存控制标头,但它没有帮助。标题是:
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Pragma: no-cache');
此外,为了记录,我尝试在每次刷新时更改GET变量的值,以欺骗IE认为它是另一个页面,但无济于事。我甚至复制了代码并将其放在另一个页面中,在每次刷新时从一个切换到另一个,但这并没有让IE刷新。我的猜测是每个其他浏览器容忍的语法中的一个小错误,或者IE正在主动阻止刷新。
答案 0 :(得分:0)
除了已经提出的建议之外,另一个选择是在您的网址中添加随机变量属性,以便将链接与IE浏览器可能缓存的任何值区分开来。