web-dev-qa-db-ja.com

最初のページの読み込み後の1回のページ更新

これを示すJavaScriptコードを実装したいと思います。ページが完全に読み込まれた場合、ページをすぐに更新しますが、一度だけ更新します。私は「一度だけ」で立ち往生しています:

window.onload = function () {window.location.reload()}

これにより、「一度だけ」のないループが得られます。これが役立つ場合、jQueryがロードされます。

74
Martin

私は次のようにハッシュを使用すると言います:

window.onload = function() {
    if(!window.location.hash) {
        window.location = window.location + '#loaded';
        window.location.reload();
    }
}
83
Cokegod

この問題に遭遇すると、ここまで検索しますが、ほとんどの回答は既存のURLを変更しようとしています。ここでは、localStorageを使用してうまくいく別の答えがあります。

<script type='text/javascript'>

(function()
{
  if( window.localStorage )
  {
    if( !localStorage.getItem('firstLoad') )
    {
      localStorage['firstLoad'] = true;
      window.location.reload();
    }  
    else
      localStorage.removeItem('firstLoad');
  }
})();

</script>
33
Haimei
<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回しかリロードされません。この問題にも直面し、検索すると、この素敵なソリューションが見つかりました。これは私にとってはうまくいきます。

27

このリンクにJavaスクリプトコードが含まれていることを確認します。このコードを使用すると、ページを1回だけ更新できます。

http://www.hotscripts.com/forums/javascript/4460-how-do-i-have-page-automatically-refesh-only-once.html

ページを更新する方法は複数あります。

solution1

開くたびにページを更新するには、次を使用します。

<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</head>

sollution2:

<script language=" JavaScript" >
<!-- 
function LoadOnce() 
{ 
window.location.reload(); 
} 
//-->
</script>

次に、言うように変更します

<Body onLoad=" LoadOnce()" >

solution3:

response.setIntHeader("Refresh", 1);

ただし、このソリューションは、指定した時間に応じて複数回ページを更新します

それがお役に立てば幸いです

8
Areeg Samir

私はこれをページのヘッドタグに入れて、1回リロードしたい:

<?php if(!isset($_GET['mc'])) {
echo '<meta http-equiv="refresh" content= "0;URL=?mc=mobile" />';
} ?>

値「mc」は任意に設定できますが、2行で両方が一致する必要があります。 「= mobile」は「= anythingyouwant」にすることができ、更新を停止するには値が必要です。

3
mike

</body>タグの後:

<script type="text/javascript">
if (location.href.indexOf('reload')==-1)
{
   location.href=location.href+'?reload';
}
</script>
1
Vlad Webster

GETまたはPOST情報を使用する必要があります。 GETは最も簡単です。 JSはURLをチェックします。特定のパラメーターが見つからなかった場合、ページを更新するのではなく、「異なる」URLにユーザーを送信します。これは、同じURLでGETパラメーターを含むURLです。 。

例えば:
http://example.com ->更新します
http://example.com?refresh=no ->更新しない

乱雑なURLが必要ない場合は、必要なPHPパラメータが必要かどうかを本質的に示す隠し値をエコーするPOSTを本文の先頭に含めます。ページを更新しないことは、最初のページリクエストに含まれていました。その直後に、JSを含めてその値を確認し、必要に応じてそのPOST情報でページを更新します。

0
maxedison

以下のコードを試してください

var windowWidth = $(window).width();

$(window).resize(function() {
    if(windowWidth != $(window).width()){
    location.reload();

    return;
    }
});
0
Nithun Aravind
        var foo = true;
        if (foo){
            window.location.reload(true);
            foo = false;

        }
0
Ben Bieler

このようにwindow.localStorage ...を使用します

var refresh = $window.localStorage.getItem('refresh');
console.log(refresh);
if (refresh===null){
    window.location.reload();
    $window.localStorage.setItem('refresh', "1");
}

それは私の仕事です

これで試してください

var element = document.getElementById('position');        
element.scrollIntoView(true);`
0
user2053927

最後に、2か月の調査の後、ページをリロードするためのソリューションが得られました。

クライアントサイドのJSプロジェクトでは問題なく動作します。

以下のページをリロードする関数を一度だけ作成しました。

1)最初にブラウザーのロード時間を取得する

2)現在のタイムスタンプを取得する

3)ブラウザの読み込み時間+ 10秒

4)現在のタイムスタンプよりもブラウザの読み込み時間が10秒長い場合、ページは「reloadPage();」で更新できます。

ただし、10秒以下の場合、ページがリロードされるだけであるため、繰り返しリロードされません。

5)したがって、「reloadPage();」を呼び出すとあなたのjsファイルページのどこかにある関数は一度だけリロードされます。

それが誰かを助けることを願っています

// Reload Page Function //
                function reloadPage() {
                    var currentDocumentTimestamp = new Date(performance.timing.domLoading).getTime();
                    // Current Time //
                    var now = Date.now();
                    // Total Process Lenght as Minutes //
                    var tenSec = 10 * 1000;
                    // End Time of Process //
                    var plusTenSec = currentDocumentTimestamp + tenSec;
                    if (now > plusTenSec) {
                        location.reload();
                    }
                }


                // You can call it in somewhere //
                reloadPage();
0

これを使って

<body onload =  "if (location.search.length < 1){window.location.reload()}">
0
bakchod_launda

SetTimeoutを使用した別のソリューションは完璧ではありませんが、機能します。

現在のURLにパラメーターが必要なので、現在のURLのイメージは次のようになります。

www.google.com?time=1

次のコードは、ページを1回だけ再読み込みします。

 // Reload Page Function //
    // get the time parameter //
        let parameter = new URLSearchParams(window.location.search);
          let time = parameter.get("time");
          console.log(time)//1
          let timeId;
          if (time == 1) {
    // reload the page after 0 ms //
           timeId = setTimeout(() => {
            window.location.reload();//
           }, 0);
   // change the time parameter to 0 //
           let currentUrl = new URL(window.location.href);
           let param = new URLSearchParams(currentUrl.search);
           param.set("time", 0);
   // replace the time parameter in url to 0; now it is 0 not 1 //
           window.history.replaceState({}, "", `${currentUrl.pathname}?${param}`);
        // cancel the setTimeout function after 0 ms //
           let currentTime = Date.now();
           if (Date.now() - currentTime > 0) {
            clearTimeout(timeId);
           }
          }

受け入れられた答えは最小限のコードを使用し、理解しやすいです。これに対する別の解決策を提供しました。

これが他の人に役立つことを願っています。

0
MING WU