2

ページを 8 秒ごとにリロードする必要があります。Chrome、Firefox、および Safari では問題なく動作しますが、IE では、1 回から 12 回の更新で更新が停止します。それは問題です。

以下の部分は、ドキュメントのヘッドに含まれています。getScrollXY はページ座標を取得して、正確な位置で iframe をリロードできるようにします。3 つの 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 が積極的に更新をブロックしていると思われます。

4

1 に答える 1

0

すでに提案されているものとは別の別のオプションは、IE ブラウザーがキャッシュした可能性のある値とリンクを区別するために、URL にランダム変数属性を追加することです。

于 2013-06-04T21:57:38.800 に答える