javascript - 为什么JS在IE以外的所有浏览器都能正常刷新?

标签 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.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);
}

这就是 Action 实际发生的地方。

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 ,但没有帮助。 header 是:

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 正在主动阻止刷新。

最佳答案

除了已经建议的选项之外,另一个选项是为您的 url 添加一个随机变量属性,以便将链接与 IE 浏览器可能缓存的任何值区分开来。

关于javascript - 为什么JS在IE以外的所有浏览器都能正常刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755126/

相关文章:

javascript - 为什么图片在 HTML 中横向显示?

javascript - JavaScript 中如何表示超时?

javascript - 将无符号整数数组快速转换为 base64

javascript - Internet Explorer buggy CSS 左

javascript - 从当前页面刷新不同的页面

javascript - 为什么我的 react 表没有更新数据?

JavaScript 未捕获类型错误 : showcreate1 is not a function

asp.net - 检查 IE 浏览器是否为 .NET

android - EditTextPreference 值仅在第二次单击 ListPreference 后刷新

javascript - ajax加载后刷新DOM元素