Bir sayfayı jQuery ile nasıl yenileyebilirim?
Bir sayfayı jQuery ile nasıl yenileyebilirim?
Yanıtlar:
Kullanım location.reload()
:
$('#something').click(function() {
location.reload();
});
reload()
Fonksiyon için ayarlanabilir isteğe bağlı bir parametre alır true
sunucunun yerine önbellekten bir yeniden kuvvet için. Parametre varsayılan olarak ayarlanır false
, bu nedenle sayfa varsayılan olarak tarayıcının önbelleğinden yeniden yüklenebilir.
window.location.href=window.location.href;
ve location.href=location.href;
çalıştı.
window.location.reload(true);
sert yenileme olacak, aksi takdirde varsayılan olarak yanlış
location.reload();
standart bir javascripttir. Bunun için jQuery'ye ihtiyacınız yok.
Bir sayfayı JavaScript ile yenilemenin birden fazla sınırsız yolu vardır :
location.reload()
history.go(0)
location.href = location.href
location.href = location.pathname
location.replace(location.pathname)
location.reload(false)
Belgeyi tekrar web sunucusundan çekmemiz gerekirse (belge içeriğinin dinamik olarak değiştiği yer gibi) argümanı şu şekilde geçiririz
true
.
Listenin yaratıcı olmasına devam edebilirsiniz:
window.location = window.location
window.self.window.self.window.window.location = window.location
var methods = [
"location.reload()",
"history.go(0)",
"location.href = location.href",
"location.href = location.pathname",
"location.replace(location.pathname)",
"location.reload(false)"
];
var $body = $("body");
for (var i = 0; i < methods.length; ++i) {
(function(cMethod) {
$body.append($("<button>", {
text: cMethod
}).on("click", function() {
eval(cMethod); // don't blame me for using eval
}));
})(methods[i]);
}
button {
background: #2ecc71;
border: 0;
color: white;
font-weight: bold;
font-family: "Monaco", monospace;
padding: 10px;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.5s ease;
margin: 2px;
}
button:hover {
background: #27ae60;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(reload()/(false))
daha yavaştır. hmmm. ilginç. :) ve 1 ve 6 reload()
varsayılan parametresi ile aynıdır false
.
location.href = location.href
genellikle kullandığım şey, ama diğerleri için teşekkürler. Çok kullanışlı! +1
Sanırım birçok yol işe yarayacak:
window.location.reload();
history.go(0);
window.location.href=window.location.href;
window.location.href=window.location.href;
yapacak bir şey URL ucunda bir # / hashbang varsa example.com/something#blah
:
location.reload()
ve arasındaki farkın ne olduğunu merak etmesi durumunda history.go(0)
: Yok. W3.org/TR/html5/browsers.html#dom-history-go adresindeki HTML 5 spesifikasyonunun ilgili bölümü açıkça eşdeğer olduklarını açıkça belirtir: " go(delta)
Yöntem çağrıldığında, yönteme ilişkin argüman atlanırsa veya sıfır değeri, kullanıcı aracısı location.reload()
yöntem çağrılmış gibi davranmalıdır . "
Bir sayfayı jQuery ile yeniden yüklemek için şunları yapın:
$.ajax({
url: "",
context: document.body,
success: function(s,x){
$(this).html(s);
}
});
Burada kullandığım yaklaşım Ajax jQuery idi. Chrome 13'te test ettim . Sonra kodu, yeniden yüklemeyi tetikleyecek işleyiciye koydum. URL olduğu ""
anlamına gelir bu sayfayı .
context
parametresini yanlış anladığını $.ajax
ve bir şekilde sihir yapmasını beklediklerini düşünüyorum. Tek yaptığı geri arama işlevlerinin değerini ayarlamaktırthis
. Bir URL'ye Ajax, ""
şu anda bulunduğunuz URL'yi vurur, böylece normal olarak tam HTML'yi ( <html>
ve <head>
ve dahil <body>
) yükler ve bu yanıttaki hiçbir şey istemediğiniz şeyleri filtrelemez.
Geçerli sayfa bir POST isteği tarafından yüklendiyse,
window.location = window.location.pathname;
onun yerine
window.location.reload();
çünkü window.location.reload()
bir POST isteği tarafından yüklenen bir sayfada çağrılırsa onay istenir.
window.location = window.location
de mükemmel değildir; geçerli URL'de bir parça (hashbang) varsa hiçbir şey yapmaz.
Soru şu olmalı,
JavaScript ile bir sayfayı yenileme
window.location.href = window.location.href; //This is a possibility
window.location.reload(); //Another possiblity
history.go(0); //And another
Seçim için şımarıksın.
Kullanmak isteyebilirsiniz
location.reload(forceGet)
forceGet
bir boolean ve isteğe bağlıdır.
Varsayılan, sayfayı önbellekten yeniden yükleyen false değeridir.
Tarayıcıyı, önbellekten de kurtulmak için sayfayı sunucudan almaya zorlamak istiyorsanız bu parametreyi true olarak ayarlayın.
Ya da sadece
location.reload()
önbellekleme ile hızlı ve kolay istiyorsanız.
Önbellekle ilgili farklı davranışlarla üç yaklaşım:
location.reload(true)
forcedReload
Parametresini uygulayan tarayıcılarda location.reload()
, sayfanın ve tüm kaynaklarının (komut dosyaları, stil sayfaları, resimler vb.) Yeni bir kopyasını getirerek yeniden yüklenir. Hizmet etmeyecek herhangi önbellekten kaynaklar - herhangi göndermeden sunucudan taze kopyalarını alır if-modified-since
veya if-none-match
istekte başlıklarını.
Mümkün olan yerlerde tarayıcılarda "sabit yeniden yükleme" yapan kullanıcıya eşdeğerdir.
Not olduğunu geçen true
etmek location.reload()
Firefox'ta (bkz desteklenir MDN ) ve Internet Explorer (bkz MSDN ) ama evrensel olarak desteklenen ve bir parçası değildir değil W3 HTML 5 spec , ne W3 taslak HTML 5.1 Spec , ne de WHATWG HTML Yaşam Standardı .
Google Chrome gibi desteklenmeyen tarayıcılarda olduğu gibi location.reload(true)
davranır location.reload()
.
location.reload()
veya location.reload(false)
Çoğul sayfası, bir taze getirilirken, HTML sayfasının üzerindeki, ve sahne olmayan önbelleğe alınan kopya RFC 7234 , tarayıcı önbelleğe alıp almadığını (komut gibi) herhangi bir kaynak revalidasyon isteklerini bile olsalar taze RFC 7234 izinler hizmet etmek tarayıcı vardır Onları yeniden doğrulama olmadan.
Tam olarak, bir location.reload()
arama gerçekleştirirken tarayıcının önbelleğini nasıl kullanması gerektiği belirtilmedi veya belirtilmedi; Yukarıdaki davranışı deneylerle belirledim.
Bu, kullanıcının tarayıcılarındaki "yenile" düğmesine basmasıyla eşdeğerdir.
location = location
(veya location
özelliklerine tahsis edilmesini içeren sonsuz sayıda diğer olası teknikler )Yalnızca sayfanın URL'si bir fragid / hashbang içermiyorsa çalışır!
Refetching veya yeniden valide olmadan Reloads sayfasını herhangi taze önbellekten kaynaklar. Sayfanın HTML'sinin kendisi yeni ise, HTTP isteği gerçekleştirmeden sayfayı yeniden yükler.
Bu, (önbellek açısından) sayfayı yeni bir sekmede açan kullanıcıya eşdeğerdir.
Ancak, sayfanın URL'si bir karma içeriyorsa bunun bir etkisi olmaz.
Yine, burada önbelleğe alma davranışı bildiğim kadarıyla belirtilmemiş; Test ederek belirledim.
Yani, özet olarak, kullanmak istersiniz:
location = location
sayfanın URL'sinde bir karma olmadığı sürece önbelleğin maksimum kullanımı için , bu durumda çalışmazlocation.reload(true)
yeniden onaylamadan tüm kaynakların yeni kopyalarını almak için (evrensel olarak desteklenmese ve location.reload()
Chrome gibi bazı tarayıcılarda farklı davranmayacak olsa da )location.reload()
'yenile' düğmesine tıklayarak kullanıcının etkisini tam olarak yeniden oluşturmak için.location = location
URL'de bir karma varsa çalışmaz. Parçacık kullanan herhangi bir site için - hatta bir sayfaya bağlantı veren bir kişinin URL'ye akla gelebilecek şekilde bir kırıcı ekleyebileceği herhangi bir site için - bu da kırılmasını sağlar.
window.location.reload()
sunucudan yeniden yüklenir ve tüm verileriniz, komut dosyalarınız, resimleriniz vb. tekrar yüklenir.
HTML'yi yenilemek istiyorsanız, window.location = document.URL
çok daha hızlı ve daha az trafikle geri döner. Ancak URL'de bir karma (#) varsa sayfayı yeniden yüklemez.
location.reload()
bağımsız değişkenler olmadan bile önbelleğe alınmış kaynakların yeniden doğrulanmasını zorunlu kılar, ancak window.location = document.URL
önbellekli kaynakları sunucuya yeni oldukları sürece vurmadan sunmaktan mutluluk duyar.
JQuery Load
işlevi sayfa yenileme de gerçekleştirebilir:
$('body').load('views/file.html', function () {
$(this).fadeIn(5000);
});
Soru genel olduğundan, cevap için olası çözümleri özetlemeye çalışalım:
Basit düz JavaScript Çözümü :
En kolay yol, uygun bir şekilde yerleştirilmiş tek hatlı bir çözümdür:
location.reload();
Burada birçok kişinin eksik olduğu şey, bazı "puanlar" almayı umdukları için, reload () işlevinin kendisinin bir parametre olarak bir Boolean sunmasıdır (ayrıntılar: https://developer.mozilla.org/en-US/docs/Web / API / Konum / yeniden yükleme ).
Location.reload () yöntemi, kaynağı geçerli URL'den yeniden yükler. İsteğe bağlı benzersiz parametresi, doğru olduğunda sayfanın her zaman sunucudan yeniden yüklenmesine neden olan bir Boolean değeridir. Yanlış veya belirtilmemişse, tarayıcı sayfayı önbelleğinden yeniden yükleyebilir.
Bu, iki yol olduğu anlamına gelir:
Çözüm1: Geçerli sayfayı sunucudan yeniden yüklemeye zorlayın
location.reload(true);
Solution2: önbellek veya sunucudan yeniden yüklenmesi (tarayıcı ve config dayanarak)
location.reload(false);
location.reload();
Ve bir olayı dinleyerek jQuery ile birleştirmek istiyorsanız, ".click" veya diğer olay sarmalayıcılar yerine ".on ()" yöntemini kullanmanızı öneririm, örneğin daha uygun bir çözüm:
$('#reloadIt').on('eventXyZ', function() {
location.reload(true);
});
İşte jQuery kullanarak bir sayfayı eşzamansız olarak yeniden yükleyen bir çözüm. Neden olduğu titreşimi önler window.location = window.location
. Bu örnek, gösterge tablosunda olduğu gibi sürekli olarak yeniden yüklenen bir sayfayı göstermektedir. Savaşta test edildi ve Times Meydanı'ndaki bir bilgi ekranı TV'de çalışıyor.
<!DOCTYPE html>
<html lang="en">
<head>
...
<meta http-equiv="refresh" content="300">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script>
function refresh() {
$.ajax({
url: "",
dataType: "text",
success: function(html) {
$('#fu').replaceWith($.parseHTML(html));
setTimeout(refresh,2000);
}
});
}
refresh();
</script>
</head>
<body>
<div id="fu">
...
</div>
</body>
</html>
Notlar:
$.ajax
doğrudan gibi $.get('',function(data){$(document.body).html(data)})
nedenler css / js dosyaları önbellek baskın almak için kullanmak bile cache: true
kullandığımız bu yüzden, işte buparseHTML
parseHTML
bir body
etiket bulamayacaksınız, bu yüzden tüm vücudunuzun ekstra bir div'a gitmesi gerekiyor, umarım bu bilgi külçesi bir gün size yardımcı olur, bunun için kimliği nasıl seçtiğimizi tahmin edebilirsinizdiv
http-equiv="refresh"
sadece durumda bir şey javascript / sunucu hıçkırık ile yanlış giderse, o zaman sayfa HALA telefon görüşmesi almadan yeniden yükleyecektirhttp-equiv
yenilemebuldum
window.location.href = "";
veya
window.location.href = null;
ayrıca sayfanın yenilenmesini sağlar.
Bu, karmayı kaldırarak sayfayı yeniden yüklemeyi çok daha kolay hale getirir. İOS simülatöründe AngularJS'yi kullandığımda çok güzel, bu yüzden uygulamayı tekrar çalıştırmak zorunda kalmam.
JavaScript location.reload()
yöntemini kullanabilirsiniz . Bu yöntem bir boole parametresini kabul eder. true
veya false
. Parametre true
; sayfa her zaman sunucudan yeniden yüklenir. Eğer öyleyse false
; varsayılan veya boş parametre tarayıcısı ile sayfayı önbelleğinden yeniden yükleyin.
ile true
parametre
<button type="button" onclick="location.reload(true);">Reload page</button>
İle default
/ false
parametre
<button type="button" onclick="location.reload();">Reload page</button>
Jquery kullanma
<button id="Reloadpage">Reload page</button>
<script type="text/javascript">
$('#Reloadpage').click(function() {
location.reload();
});
</script>
Sen gerekmez kullanarak bir sayfayı yeniden, jQuery bir şey saf JavaScript sadece bu gibi konum mülkiyet yeniden işlevini kullanın:
window.location.reload();
Varsayılan olarak, bu, tarayıcı önbelleğini (varsa) kullanarak sayfayı yeniden yükler ...
Sayfayı yeniden yüklemeye zorlamak istiyorsanız, aşağıdaki gibi yeniden yükleme yöntemine gerçek bir değer iletmeniz yeterlidir ...
window.location.reload(true);
Ayrıca zaten pencere kapsamındaysanız , pencereden kurtulabilir ve şunları yapabilirsiniz:
location.reload();
kullanım
location.reload();
veya
window.location.reload();
JQuery kullanıyorsanız ve yenilemek istiyorsanız, jQuery'nizi bir javascript işlevine eklemeyi deneyin:
Bir tıkladığınızda bir iframe'i bir sayfadan gizlemek istedim h3
, benim için işe yaradı, ancak iframe
tarayıcıyı manuel olarak yenilemediğimde başlamamı sağlayan öğeyi tıklayamadım ... ideal değil.
Aşağıdakileri denedim:
var hide = () => {
$("#frame").hide();//jQuery
location.reload(true);//javascript
};
Düz Jane javascript jQuery ile karıştırma çalışması gerekir.
// code where hide (where location.reload was used)function was integrated, below
iFrameInsert = () => {
var file = `Fe1FVoW0Nt4`;
$("#frame").html(`<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${file}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe><h3>Close Player</h3>`);
$("h3").enter code hereclick(hide);
}
// View Player
$("#id-to-be-clicked").click(iFrameInsert);
Buradaki tüm cevaplar iyi. Soru, sayfayı yeniden yüklemeyle ilgili olarak belirtildiğindenjQuery, Gelecekteki okuyucular için daha fazla şey eklemeyi düşündüm.
jQuery ,HTML'nin istemci tarafı kodlamasını basitleştirmek için tasarlanmış birplatformlar arası JavaScript kütüphanesidir .
~ Wikipedia ~
Böylece anlayacaksınız ki jQueryveya jQuery dayanır javaScript. Yani safla gitmekjavaScript basit şeyler söz konusu olduğunda çok daha iyi.
Ama eğer ihtiyacınız varsa jQuery çözüm, işte bir tane.
$(location).attr('href', '');
Geçerli sayfaları yeniden yüklemenin birçok yolu vardır, ancak bir şekilde bu yaklaşımları kullanarak sayfanın güncellendiğini görebilirsiniz, ancak birkaç önbellek değerine sahip olmayacaksınız, bu nedenle bu sorunun üstesinden gelin veya zor talepler yapmak istiyorsanız aşağıdaki kodu kullanın.
location.reload(true);
//Here, it will make a hard request or reload the current page and clear the cache as well.
location.reload(false); OR location.reload();
//It can be reload the page with cache
<i id="refresh" class="fa fa-refresh" aria-hidden="true"></i>
<script>
$(document).on('click','#refresh',function(){
location.reload(true);
});
</script>
Basit Javascript Çözümü:
location = location;
<button onClick="location = location;">Reload</button>
Muhtemelen en kısa (12 karakter) - kullanım geçmişi
history.go()
İki şekilde yazabilirsiniz. 1, basit yenileme olarak da adlandırılan sayfayı yeniden yüklemenin standart yoludur
location.reload(); //simple refresh
Bir diğerine sert yenileme denir . Burada boole ifadesini iletir ve true olarak ayarlarsınız. Bu, eski önbelleği yok eden ve içeriği sıfırdan görüntüleyen sayfayı yeniden yükleyecektir.
location.reload(true);//hard refresh
JavaScript'te en kısadır.
window.location = '';
$(document).on("click", "#refresh_btn", function(event)
{
window.location.replace(window.location.href);
});
İşte jQuery kullanarak sayfayı yeniden yüklemek için kullanabileceğiniz bazı kod satırları .
JQuery sarmalayıcısını kullanır ve yerel dom öğesini ayıklar.
Kodunuzda bir jQuery hissi istiyorsanız ve kodun hızını / performansını önemsemiyorsanız bunu kullanın .
İhtiyaçlarınıza uygun 1'den 10'a kadar seçim yapın veya bundan önceki desene ve cevaplara göre biraz daha ekleyin.
<script>
$(location)[0].reload(); //1
$(location).get(0).reload(); //2
$(window)[0].location.reload(); //3
$(window).get(0).location.reload(); //4
$(window)[0].$(location)[0].reload(); //5
$(window).get(0).$(location)[0].reload(); //6
$(window)[0].$(location).get(0).reload(); //7
$(window).get(0).$(location).get(0).reload(); //8
$(location)[0].href = ''; //9
$(location).get(0).href = ''; //10
//... and many other more just follow the pattern.
</script>