jQuery를 사용하여 페이지를 한 번 새로 고침 (다시로드) 하시겠습니까?


82

jQuery를 사용하여 페이지 (또는 특정 div)를 한 번 (!) 새로 고침 / 다시로드하는 방법이 궁금합니다.

이상적으로 DOM structure는 사용 가능 ( onload이벤트 참조 ) 직후에 부정적인 영향 back button이나 bookmark기능에 영향을주지 않는 방식 입니다.

참고 : replace() 타사 제한으로 인해 허용되지 않습니다.


질문에 뭔가 빠졌습니다. 페이지 "새로 고침"이란 무엇을 의미합니까? 페이지가로드 된 경우 즉시 다시로드하면 똑같은 콘텐츠 만로드됩니다. 무엇을 성취하려고합니까?
Doug Neiner

"일반적으로"먼저 표시되지만 새로 고침 / 다시로드 할 때 iFrame에 강제로 적용되는 템플릿을 작업 중입니다. 이제 페이지가 첫 번째 "호출"에서도 해당 iFrame에 표시되기를 원합니다. TIA!
Pete

나는 당신이이 문서에 읽어해야한다고 생각 mycodingtricks.com/snippets/javascript/...
하기 Shubham 쿠마

답변:


81

좋아, 나는 당신이 요구하는 것을 얻은 것 같습니다. 이 시도

if(window.top==window) {
    // You're not in a frame, so you reload the site.
    window.setTimeout('location.reload()', 3000); //Reloads after three seconds
}
else {
    //You're inside a frame, so you stop reloading.
}

한 번이면 그냥 해

$('#div-id').triggerevent(function(){
    $('#div-id').html(newContent);
});

주기적으로

function updateDiv(){
    //Get new content through Ajax
    ...
    $('#div-id').html(newContent);
}

setInterval(updateDiv, 5000); // That's five seconds

따라서 5 초마다 div # div-id 콘텐츠가 새로 고쳐집니다. 전체 페이지를 새로 고치는 것보다 낫습니다.


감사합니다. 페이지를 한 번만 새로 고침 / 다시로드하고 싶습니다 (가능한 경우 브라우저 세션 당) ...?
Pete

재 장전 트리거는 무엇입니까? 특정 이벤트 또는 시간?
Ben

트리거 : 페이지의 첫 번째 "호출"(죄송합니다. 제 영어는 다소 나쁩니다 g )
Pete

omfgroflmao, 당신은 천재입니다! "편집 된"버전은 정확히 내가 찾고 있던 것입니다 (하루 종일 btw ...). 여기에 선택적 시간 트리거를 추가 할 수 있습니까? 그래서 그 location.reload가 실행됩니다-예를 들어-3 초 후에 ...? TIA (당신이 정말 내 일을했습니다!)
피트

예, window.setTimeout ( 'location.reload ()', 3000);으로 location.reload ()를 변경하십시오.

66

다시로드하려면 다음을 시도하십시오.

window.location.reload(true);

1
bool 논쟁에 대해 설명해 주시겠습니까?
tomfumb

7
location.reload 함수에 대한 인수는 브라우저가 웹 서버에서 문서를 검색해야하는지 여부를 결정합니다. 웹 서버에서 문서를 다시 가져와야하는 경우 (예 : 문서 내용이 동적으로 변경되는 위치) 인수를 'true'로 전달합니다. grizzlyweb.com/webmaster/javascripts/refresh.asp
Secret Squirrel


5

이것을 사용하십시오 :

    <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조건 으로 인해 페이지는 한 번만 새로 고침됩니다.


4
$('#div-id').click(function(){

   location.reload();
        });

이것은 올바른 구문입니다.

$('#div-id').html(newContent); //This doesnt work

3

이것은 JavaScript 기본이기 때문에 jQuery 새로 고침 기능이 없습니다.

이 시도:

<body onload="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload');">

멋지네요. 함수 안에 넣을 수도 있습니다 : <body onload = "javascript : init ()"> and function init () {if (location.href.indexOf ( 'reload') ==-1) location.replace (location. href + '& reload');}
Adrian P.

2

사용하다:

<html>
    <head>
        <title>Reload (Refresh) Page Using Jquery</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $('#reload').click(function() {
                    window.location.reload();
                });
            });
        </script>
    </head>
    <body>
        <button id="reload" >Reload (Refresh) Page Using</button>
    </body>
</html>

1

이것을 파일 상단에 추가하면 사이트가 30 초마다 새로 고침됩니다.

<script type="text/javascript">
    window.onload = Refresh;

    function Refresh() {
        setTimeout("refreshPage();", 30000);
    }
    function refreshPage() {
        window.location = location.href;
    }
</script>

다른 하나는 : 머리 태그에 추가

<meta http-equiv="refresh" content="30">

1
 - location = location
 - location = location.href
 - location = window.location
 - location = self.location
 - location = window.location.href
 - location = self.location.href
 - location = location['href']
 - location = window['location']
 - location = window['location'].href
 - location = window['location']['href']

이를 위해 jQuery가 필요하지 않습니다. JavaScript로 할 수 있습니다.


0

대신 사용

function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
}

<a href="javascript:timedRefresh(2000)">image</a>

0

이 코드를 시도하십시오.

$('#iframe').attr('src', $('#iframe').attr('src'));

0

이 시도:

<input type="button" value="Reload" onClick="history.go(0)">

0

자바 스크립트로 페이지를 새로 고침하려면 다음을 사용하면됩니다.

location.reload();

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.