Javascript 为什么JS在除IE之外的所有浏览器中都能正常刷新?
我需要每8秒重新加载一次页面。它在Chrome、Firefox和Safari中运行良好,但在IE中,它在刷新1到12次后就会停止刷新。这是有问题的 以下部分包含在文件的标题中。getScrollXY获取页面坐标,以便可以在某个位置重新加载iframe。三个d变量是X值、Y值和形式。这里的PHP变量是页面的URL,显然,可以根据需要进行修改Javascript 为什么JS在除IE之外的所有浏览器中都能正常刷新?,javascript,internet-explorer,refresh,Javascript,Internet Explorer,Refresh,我需要每8秒重新加载一次页面。它在Chrome、Firefox和Safari中运行良好,但在IE中,它在刷新1到12次后就会停止刷新。这是有问题的 以下部分包含在文件的标题中。getScrollXY获取页面坐标,以便可以在某个位置重新加载iframe。三个d变量是X值、Y值和形式。这里的PHP变量是页面的URL,显然,可以根据需要进行修改 function unloadP(dung,dong,dang) { s=getScrollXY(); document.getElement
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>");
}
}
另外,为了记录在案,我尝试在每次刷新时更改GET变量的值,以诱使IE认为这是另一个页面,但没有效果。我甚至复制了代码并将其放在另一个页面中,每次刷新时从一个页面切换到另一个页面,但这也不能保持IE的刷新。我的猜测可能是其他浏览器所能容忍的语法中的一个小错误,或者IE正在积极阻止刷新。除了已经建议的之外,另一个选项是在url中添加一个随机变量属性,以便将链接与IE浏览器可能缓存的任何值区分开来 您是否设置了正确的缓存头?我只设置了以下头,没有用。标头('Cache-Control:no-Cache,no-store,max-age=0,必须重新验证');页眉(‘到期日期:1997年7月26日星期一05:00:00 GMT’);标题('Pragma:no cache');过期日期不一定要在将来吗?我已经用$\u GET变量这样做了。每次加载时,它都会从0切换到1或从1切换到0。事实上,在某一点上,我甚至复制了该页面并给它起了另一个名称,并在每次刷新时在两个页面之间切换。不管怎样,我还是随机停止了刷新。
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');