JQuery kullanarak bir sayfayı yenilemek (yeniden yüklemek)?


83

JQuery kullanarak bir sayfayı (hatta belirli bir div'i) bir kez (!) Yenilemeyi / yeniden yüklemeyi merak ediyorum?

İdeal olarak DOM structure, mevcut olandan hemen sonra (bkz. onloadOlay) ve olumsuz bir şekilde etkilemeyen back buttonveya bookmarkişlevsellik.

Lütfen unutmayın: replace() üçüncü taraf kısıtlamaları nedeniyle izin verilmiyor.


Sorunuzda bir şey eksik. Sayfayı "yenilemek" ile neyi kastediyorsunuz? Sayfa yüklendiyse, hemen yeniden yüklemek sadece aynı içeriği yükler, değil mi? Neyi başarmaya çalışıyorsun?
— Doug Neiner 01

Önce "normal" olarak gelen, ancak yenilendiğinde / yeniden yüklendiğinde iFrame'e zorlanan bir şablon üzerinde çalışıyorum. Şimdi sayfanın o iFrame'de ilk "çağrısında" da görüntülenmesini istiyorum. TIA!
— Pete

Yanıtlar:


82

Pekala, sanırım istediğin şey bende. Bunu dene

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

Bir kere ise, sadece yap

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

Periyodik ise

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

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

Böylece, her beş saniyede bir div # div-id içeriği yenilenecektir. Tüm sayfayı yenilemekten daha iyidir.


Teşekkürler, ancak sayfanın yalnızca BİR KEZ (mümkünse tarayıcı oturumu başına) yenilenmesini / yeniden yüklenmesini istiyorum ...?
— Pete

Yeniden yükleme için tetikleyici nedir? belirli bir olay mı yoksa sadece zaman mı?
— Ben

tetik: sayfanın ilk "çağrısı" (üzgünüm, ingilizcem biraz zayıf g )
— Pete

omfgroflmao, sen bir dahisin! "Düzenlenmiş" sürüm tam olarak aradığım şeydi (bütün gün btw ...). Buraya isteğe bağlı bir zaman tetikleyicisi eklemek mümkün mü? Yani o konum. Yeniden yükleme - diyelim ki - 3 saniye sonra yapılır ...? TIA (Gerçekten günümü yaptınız!)
— Pete

Evet, elbette, window.setTimeout ('location.reload ()', 3000) ile location.reload () değiştirin;
— Ben

66

Yeniden yüklemek için şunu deneyebilirsiniz:

window.location.reload(true);

1
bool argümanını açıklayabilir misin?
— tomfumb

7
Location.reload işlevinin argümanı, tarayıcının belgeyi web sunucusundan alıp almayacağını belirler. Belgeyi web sunucusundan tekrar çekmeniz gerekirse (belge içeriğinin dinamik olarak değiştiği yer gibi), bağımsız değişkeni 'true' olarak iletin grizzlyweb.com/webmaster/javascripts/refresh.asp
— Secret Squirrel


5

Bunu kullan:

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

ifKoşul nedeniyle , sayfa yalnızca bir kez yeniden yüklenecektir.


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

   location.reload();
        });

Bu doğru sözdizimidir.

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

3

JQuery yenileme işleviniz yoktur, çünkü bu JavaScript temelidir.

Bunu dene:

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

Güzel bir. onu bir fonksiyonun içine bile koyabilirsiniz: <body onload = "javascript: init ()"> ve function init () {if (location.href.indexOf ('reload') == - 1) location.replace (location. href + '& yeniden yükle');}
— Adrian P.

2

Kullanım:

<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

Bunu dosyanızın üstüne ekleyin, site her 30 saniyede bir yenilenecektir.

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

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

Bir diğeri: head etiketine ekle

<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']

Bunun için jQuery'ye ihtiyacınız yok. JavaScript ile yapabilirsiniz.


0

Bunun yerine bunu kullan

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

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

0

Bu kodu deneyin:

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

0

Bunu dene:

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

0

Sayfayı javascript ile yenilemek için şunları kullanabilirsiniz:

location.reload();

0

Bunu kontrol thisetmekle birlikte referans kullanmanız gerekebilir location.reload(), işe yarayacaktır.

this.location.reload();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.