8

ページの読み込み時にページを 1 回リロードするにはどうすればよいですか ( を押すのと同じですF5)

$( window ).load(function() {   
    window.location.reload(true); 
});

これ自体がループします。どうすればそれを一度だけ発生させることができますか?

4

9 に答える 9

15

最近... HTML5はlocalStorageを提供します:

/* if my "reload" var isn't set locally.. getItem will be false */
if (!localStorage.getItem("reload")) {
    /* set reload to true and then reload the page */
    localStorage.setItem("reload", "true");
    location.reload();
}
/* after reloading remove "reload" from localStorage */
else {
    localStorage.removeItem("reload");
    // localStorage.clear(); // or clear it, instead
}

これにはjqueryは必要ありません。それが私を助けたので、それが役立つことを願っています。

于 2015-02-12T14:10:51.807 に答える
14

これはそれを行います:

if (window.location.href.indexOf('reload')==-1) {
     window.location.replace(window.location.href+'?reload');
}

あなたのjQueryコードで:

$( window ).load(function() {
    if (window.location.href.indexOf('reload')==-1) {
         window.location.replace(window.location.href+'?reload');
    }
});
于 2013-11-14T15:29:13.113 に答える
4
<script type="text/javascript">
$(document).ready(function(){

    //Check if the current URL contains '#'
    if(document.URL.indexOf("#")==-1)
    {
    // Set the URL to whatever it was plus "#".
    url = document.URL+"#";
    location = "#";

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

    }
    });
</script>

if条件により、ページは1回だけリロードされます。私もこの問題に直面し、検索すると良い解決策が見つかりました。これはうまくいきます。そして、http://www.webdeveloper.com/forum/showthread.php?267853-Auto-refresh-page-once-only-after-first-loadに感謝します

于 2014-04-25T11:10:32.217 に答える
2

以下の行を HTML ファイルに追加します。

    `<input name="refreshed" value="no" id="refreshed" />`<input name="refreshed" value="no" id="refreshed" />

そして、ページのオンロード時にこの関数を呼び出し、

<script type="text/javascript">
onload = function() {
    if ($("#refreshed").val() == "no") {
        location.reload();
        $("#refreshed").val("yes"); 
    }
}
</script>
于 2015-04-01T07:13:16.437 に答える
1
echo ("<script type='text/javascript'>location.replace('http://url.goes.here');</script>");

一度繰り返す

于 2014-07-11T06:18:41.860 に答える
0

もっと簡単な方法があります(私の場合はうまくいきました)

jQuery を使用している場合は、JS でグローバル変数を設定します。

<script type="text/javascript">
    var only_once = "0";
</script>

次に、この JS コードを jQuery ページ (内部<div data-role="page" id="myPage">)で使用します。

<script>

        $('#myPage').bind('pageshow', function() { 
            if (only_once==1) {
                only_once = 0 ;
                location.reload();

            } 
         });
</script>
于 2014-07-21T10:56:15.963 に答える
0

github静的ページで同様の問題を解決したようです。キャッシュによってリンクが壊れていたため、ページを強制的にリロードする (つまり、キャッシュしない) 必要がありました。

それに関する問題は、github がこれらの設定をオーバーライドするため、meta http-equiv または htaccess を使用してキャッシュを変更できなかったことです。

「一度だけリロードする」ソリューションはどれも、戻るボタンで機能しません。

以下は、すべてのブラウザで機能するようです。

<body onbeforeunload="return window.location.reload(true)">

これにより、ユーザーがページを離れるたびにサーバーから直接再読み込みが強制されます (キャッシュなしと同じ効果)。恐ろしいループは回避されます。

于 2015-08-08T23:36:44.483 に答える
0

その間、私はそれをこのように機能させてくれてありがとう

   function SetCookie (name, value) {
    var argv=SetCookie.arguments;
    var argc=SetCookie.arguments.length;
    var expires=(argc > 2) ? argv[2] : null;
    var path=(argc > 3) ? argv[3] : null;
    var domain=(argc > 4) ? argv[4] : null;
    var secure=(argc > 5) ? argv[5] : false;
    document.cookie=name+"="+escape(value)+
        ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
        ((path==null) ? "" : ("; path="+path))+
        ((domain==null) ? "" : ("; domain="+domain))+
        ((secure==true) ? "; secure" : "");
}



    function getCookie(c_name)
    {
        var c_value = document.cookie;
        var c_start = c_value.indexOf(" " + c_name + "=");
        if (c_start == -1)
        {
            c_start = c_value.indexOf(c_name + "=");
        }
        if (c_start == -1)
        {
            c_value = null;
        }
        else
        {
            c_start = c_value.indexOf("=", c_start) + 1;
            var c_end = c_value.indexOf(";", c_start);
            if (c_end == -1)
            {
                c_end = c_value.length;
            }
            c_value = unescape(c_value.substring(c_start,c_end));
        }
        return c_value;
    }   




if (getCookie('first_load'))        
    {
        if (getCookie('first_load')==true)
        {
            window.location.reload(true); // force refresh page-liste
            SetCookie("first_load",false);
        }
    }
    SetCookie("first_load",true);
于 2013-11-14T15:39:07.163 に答える