-1

ページが初めてまたは 1 回読み込まれた後にブラウザーを更新するシナリオがあります。ページの読み込み時にデータが正しく表示されず、ブラウザを更新すると表示されるため、理由がわかりません。

どうもありがとう

4

2 に答える 2

0

常に、JavaScriptを使用する必要があります。必要なのは、ページが完全に読み込まれたときに更新コードを実行することです。HTMLonloadイベントを使用することもできますが、これには問題があります(たとえば、画像が読み込まれる前に発生します)。ページ全体が読み込まれた後に確実に発生するようにしたい場合は、JQueryのready()イベントを使用することをお勧めします。

例:

// NOTE: This will only work with JQuery loaded.
$(document).ready(function(){
    location.reload(true);
});

これを最初のページの読み込み時にのみ発生させるのは、もう少し注意が必要です。URLにアンカーサフィックスを追加して、ページをまだ更新したかどうかを追跡し、URLに存在しない場合にのみ更新することができます。

$(document).ready(function(){
    if(location.hash != "#")
    {
        // Set the URL to whatever it was plus "#".
        // (The page will NOT automatically reload.)
        location = "#";

        // Reload the page.
        location.reload(true);
    }
});

または、クエリ文字列を使用することもできます。これにより、変更時にページが自動的に更新されます。

$(document).ready(function(){
    var marker = 'r'; // 'r' is for "refreshed"
    if(location.search != "?"+marker)
    {
        // Set the URL to whatever it was plus "?r".
        // (This will automatically force a page reload.)
        location = "?"+marker;
    }
});

警告:これらのサンプルのいずれかを使用して、ユーザーがURLに「#」または「?r」タグを追加した後にページをブックマークすると、ページに再度アクセスしたときにページが更新されません。防弾にしたい場合は、代わりにCookieを使用する必要があります。

于 2011-08-10T16:17:52.540 に答える
0

ブラウザを一度だけ更新したいですか?このようなことをしてください。

window.onload = function(){
    if(!document.location.hash){
        window.location = "#loaded";
    }
}

またはjquery

$(document).ready(function(){
    if(document.location.hash){
        window.location = "#loaded";
    }
});

しかし、正直なところ、これは一時的な解決策にすぎません。迅速な修正でそれを隠そうとする限り。私はそれがあなたを悩ませるために戻ってくることを保証します. 適切に記述され、構造化されたコードは生涯存続し、将来のプロジェクトでいつでも再利用できます。

于 2011-08-10T15:31:53.467 に答える