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.