첫 페이지로드 후 한 번 페이지 새로 고침


84

페이지가 완전히로드되면 페이지를 즉시 새로 고치지 만 한 번만 표시하는 JavaScript 코드를 구현하고 싶습니다. 나는 "한 번만"에 갇혀있다 :

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

이것은 "한 번만"없이 루프를 제공합니다. 이것이 도움이된다면 jQuery가로드됩니다.


1
페이지를 새로 고침하여 무엇을하고 있습니까? 문제를 해결하는 더 좋은 방법이있을 수 있습니다.
FishBasketGordo

페이지에서 시작하는 jquery 전체 화면 갤러리 스크립트가 있지만 엄지 손가락이 완전히로드되지는 않습니다. 페이지의 "새로 고침"버튼을 누르면 나머지 페이지 만로드됩니다 ... 그래서 어떤 종류의 해결 방법을 찾고있는 것이 분명합니다 ... 엄지 손가락을 따로주는 것은 너무 복잡합니다 (CMS), 다른 버그 수정은 그렇지 않습니다. 별로 도움이되지 않습니다 ... 약 4MB의 이미지입니다. 각각 300kb, 어느 시점에서 이미지의 엄지 손가락 크기가 조정되지 않고 더 이상 표시되지 않지만 (시간 초과? 너무 많음, 너무 큼 ??) 페이지로드가 완료됩니다.
Martin

pjax pjax.heroku.com을 사용할 때 비슷한 문제 (JavaScript가 작동하지 않음)가 발생 했습니다 .
Pratik Khadloya

답변:


97

나는 다음과 같이 해시를 사용한다고 말하고 싶습니다.

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

네. 그냥 제안하려고 했어요.
p3drosola

그래, 내 달러 (A $)의 _GET 매개 변수를 사용하여 제안하지만, 약간의 유사 쉽게 JS에서 해시를 접근하면 $ _GET PARAM ... 접근보다 쉽습니다 때문에
maxedison

4
URL에 해시가없는 한 가장 간단합니다. 이 경우 GET 매개 변수를 읽는 것이 더 좋습니다.
David

URL을 추가하지 않고 어떻게 할 수 있습니까?
zero_cool 2014-08-11

영리한 솔루션! 그것을 사랑하십시오! ❤
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 많이 __ / \ __
Pradeep kumar

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 조건으로 인해 페이지가 한 번만 다시로드됩니다.이 문제에 직면했고 검색 할 때이 좋은 해결책을 찾았습니다. 이것은 나를 위해 잘 작동합니다.


9

이 링크를 확인하면 페이지를 한 번만 새로 고치는 데 사용할 수있는 자바 스크립트 코드가 포함되어 있습니다.

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>

해결책 2 :

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

그런 다음 말로 변경

<Body onLoad=" LoadOnce()" >

solution3 :

response.setIntHeader("Refresh", 1);

그러나이 솔루션은 지정한 시간에 따라 페이지를 두 번 이상 새로 고칩니다.

도움이 되길 바랍니다


3

나는 이것을 한 번의 재로드를 원하는 페이지의 내 머리 태그 안에 넣습니다.

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

값 "mc"는 원하는대로 설정할 수 있지만 둘 다 2 줄에서 일치해야합니다. "= mobile"은 "= anythingyouwant"일 수 있으며 새로 고침을 중지하는 값만 있으면됩니다.


3

마침내 두 달 간의 조사 끝에 한 번 페이지를 다시로드하는 솔루션을 얻었습니다.

내 클라이언트 측 JS 프로젝트에서 잘 작동합니다.

한 번만 페이지를 다시로드하는 기능을 작성했습니다.

1) 먼저 브라우저 domloading 시간 확보

2) 현재 타임 스탬프 얻기

3) 브라우저 domloading 시간 + 10 초

4) 브라우저 domloading 시간 + 현재 타임 스탬프보다 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 초를 의미하며 원하는 시간 간격으로 설정할 수 있습니다.
Godwin Tommy

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이지만 GET 매개 변수가있는 "다른"URL로 사용자를 보냅니다. .

예 :
http : //example.com- > 새로 고침
http://example.com?refresh=no- > 새로 고침 안함

지저분한 URL을 원하지 않는 경우, 페이지를 새로 고치지 않는 데 필요한 POST 매개 변수가 초기 페이지 요청에 포함되었는지 여부를 본질적으로 나타내는 숨겨진 값을 반영하는 본문 시작 부분에 PHP를 포함합니다. 그 직후에 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

다음 코드는 페이지를 한 번만 다시로드합니다.

 // 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.