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


84

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

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

これにより、「1回だけ」のないループが発生します。これが役立つ場合、jQueryがロードされます。


1
ページをリロードして何を達成していますか?問題を解決するためのより良い方法があるかもしれません。
FishBasketGordo 2011

ページから始まるjqueryフルスクリーンギャラリースクリプトがありますが、親指が完全に読み込まれることはありません。ページの「更新」ボタンを押すと、残りのボタンが読み込まれるだけです...ある種の回避策を探していることは明らかです...親指を個別に与えるのは複雑すぎます(CMS)、他のバグ修正はしませんでした本当に役に立たない...それは約4MBの画像です。それぞれ300kb、ある時点で画像の親指のサイズが変更されて表示されなくなりました(タイムアウト?多すぎる、大きすぎる??)が、ページの読み込みは終了します。
マーティン

pjax pjax.heroku.comを使用しているときに、同様の問題(javascriptが機能しない)が発生しました
Pratik Khadloya 2012年

回答:


97

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

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

うん。私はそれを提案するつもりでした。
p3drosola 2011

JSでハッシュにアクセスする$ _GETのparam ...にアクセスするよりも簡単であるため、$ _GETパラメータを使用しての私の提案に似た、ええ、しかし少し楽
maxedison

4
これは、URLにまだハッシュがない限り、最も簡単です。その場合、GETパラメーターを読み取る方がよいでしょう。
デビッド

URLを追加せずにこれを行うにはどうすればよいですか?
zero_cool 2014

賢い解決策!大好きです!❤
ANU

48

この問題が発生した場合、ここまで検索しますが、ほとんどの回答は既存の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>

クリエイティブなソリューション。
JoJo

@Haimei Thx a lot __ / \ __
Pradeep kumar22

30
<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回だけリロードされます。私もこの問題に直面し、検索したときに、この素​​晴らしい解決策を見つけました。これは私にとってはうまくいきます。


9

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

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

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

解決策1

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

<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()" >

解決策3:

response.setIntHeader("Refresh", 1);

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

それがあなたのお役に立てば幸いです


3

これを、1回リロードしたいページのheadタグ内に配置します。

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

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


3

最後に、2か月の調査の後、ページを1回リロードするためのソリューションを入手しました。

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

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

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();

3
<script>

function reloadIt() {
    if (window.location.href.substr(-2) !== "?r") {
        window.location = window.location.href + "?r";
    }
}

setTimeout('reloadIt()', 1000)();

</script>

これは完璧に機能します


注:1000は、1秒を意味し、任意の時間間隔に設定できます。
ゴッドウィントミー

1

</body>タグの後:

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

0

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

例:
http//example.com- >更新されます
http://example.com?refresh=no- >更新されません

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


0

これで試してください

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

0

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

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

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

    return;
    }
});


0

これを使って

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

0

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

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

それは私のために働いています


0

これは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);
           }
          }

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

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


-1

以下のようにrel = "external"を使用してください。

<li><a href="index.html" rel="external" data-theme="c">Home</a></li>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.