3

1 分に 1 回自動更新する必要がある Web ページが多数あります。META REFRESH またはいくつかの JavaScript で簡単に実行できます。(そして、はい、ページ全体を更新する必要があります-多くのコンテンツが変更されます)。

ただし、可能な限り堅牢である必要があります。Web サーバーが一時的にダウンしたり、ネットワークの問題が発生したりすると、更新できず、404 エラーなどが発生し、エラー ページで永久にスタックします。

私が思いつくことができる唯一のオプションは、IFRAME でページ全体をホストし、フレーム化されたページの新しい親ページにいくつかのスクリプトを配置することです。フレームは非表示にする必要があるため、ウィンドウのサイズを変更すると、IFRAME のサイズも変更する必要があります。

もっと簡単でエレガントなソリューションはありますか? (時間の制約から、Flash/AIR/Silverlight への移行もオプションではありません)。

4

3 に答える 3

5

Ajax を使用して、ページの新しいコンテンツを読み込むことができます。ページがサーバー側で生成される場合は、本文の周りの HTML を省略して、そのコンテンツのみを出力できます。次に、新しい本文を Ajax で受け取り、ページの既存の本文をbody.innerHTML = request.responseText. Ajax コールバックでは、好きなようにあらゆる種類のエラー処理を行うことができ、エラーを無視して Ajax リクエストを再試行することもできます。

<html>
<head>
<script type="text/javascript">
function doRequest() {
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if (request.status == 200)
                 body.innerHTML = request.responseText;
            doRequest(); // restart the request
        }
    }
    request.open("get", "", true);
    request.send(null);
}
</script>
<body onload="doRequest()">
Page content...
</body>
</html>
于 2010-09-16T19:33:55.103 に答える
2

Google では、gmail に iframe メソッドを使用しています。グーグルのソリューションで間違いはありません。

于 2010-09-16T19:27:14.323 に答える
-1

JQUERY ロード メソッドを使用することもできます。

于 2011-01-10T07:07:06.320 に答える