Geçerli sayfayı yeniden yükleme bağlantısı


175

Geçerli konuma işaret eden normal bir bağlantınız olabilir mi?

Şu anda 2 çözüm buldum, ancak bunlardan biri JavaScript içeriyor ve diğerinde sayfanın mutlak yolunu bilmek zorundasınız:

<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>

JavaScript kullanmadan veya mutlak yolu bilmeden bunu yapmanın bir yolu var mı?

Yanıtlar:


198

Ben kullanıyorum:

<a href=".">link</a>

Henüz amaçlandığı gibi çalışmadığı bir vaka ve / veya tarayıcı bulamadı.

Dönem, geçerli yol anlamına gelir. ..Örneğin, şu dosya yapınız varsa, geçerli yolun üzerindeki klasöre başvurmak için de kullanabilirsiniz :

page1.html
folder1
    page2.html

Daha sonra şunları page2.htmlyazabilirsiniz:

<a href="../page1.html">link to page 1</a>

DÜZENLE:

Davranışın değişip değişmediğinden veya her zaman böyle olup olmadığından emin değilim, ancak Chrome (ve belki de diğerleri), yukarıda belirtilenleri dosyalara değil, dizinlerle ilgili olarak ele alacaktır . Eğer iseler o Bu araçlar http://example.com/foo/bar.htmldizinde gerçekten sizin /foo/ve hrefdeğeri .içinde bar.htmlsevk edecektir /foo/yerinebar.html

Bunu bir terminaldeki dosya sisteminde gezinme olarak düşünün; asla cdbir dosyaya giremezsiniz :)

DÜZENLEME 2:

Kullanım davranışı href="."artık öngörülebilir değil gibi görünüyor , hem Firefox hem de Chrome bunları nasıl ele aldıklarını değiştirmiş olabilir. Tamamen orijinal cevabıma güvenmem, daha ziyade hem boş dizeyi hem de döneminizi farklı kullanımlarda özel kullanımınız için deneyin ve istediğiniz davranışı aldığınızdan emin olun.


25
GET verilerinin bu yöntemle korunmadığına dikkat edilmelidir, bunu bir "sabit yeniden yükleme" olarak düşünün. Boş bir href değeri kullanıldığında GET verileri korunur, ancak karma değeri temizlenir (#these gibi). # Veya? href değeri yeni URL'ye "çöp" ekleyecektir. Dönemin kullanımının yeniden yükleme elde etmenin en temiz yolu olduğunu gördüm.
Markus Amalthea Magnuson

5
Bu teknik benim için mac chrome'da çalışmıyor. "." anhor olarak ".." gibi davranır ve üst sayfaya bağlanır. / admin / stuff / admin olur. Bu davranışı gören başka var mı?
Zac

3
Bu çözümler yanlış. Ayrıca Chrome'da çalışmaz ve üst dizine işaret eder. @MarkusAmaltheaMagnuson önerisi olarak boş href kullanmalısınız
coorasse

8
Bu, yalnızca URL'nin yol bileşeni bir ile bitiyorsa işe yarar /.
Kos

6
Bugün itibariyle, bu Firefox veya Chrome'da çalışmıyor. Her iki tarayıcı da href = "kullanarak üst dizine (geçerli sayfaya değil) başvurur."
jtubre

135

Diğer yanıtların hiçbirinde sorgu dizesi değerleri bulunmaz. Deneyin

<a href="javascript:window.location.href=window.location.href">

Kuşkusuz bu javascript içerir, ancak kullanıcılarınız komut dosyası devre dışı bırakılmadığı sürece, bu oldukça basittir.


5
Benim için çalışmıyor (Google Chrome 32). <a href="javascript:location.reload();"> </a>
Gabriel

3
Google Chrome 36.0.1985 kullanıyorum ve javascript: window.location.href = window.location.href çalışıyor. location.reload (), kullanıcıya sayfayı Firefox'ta yenilemek isteyip istemediğini sormak talihsiz bir etkiye sahiptir ve senaryoya bağlı olarak istenen sonucu vermeyebilir. Daha fazla tartışma için stackoverflow.com/questions/2405117/… adresine bakın .
Simon Molloy

1
Yönlendirme ile açısal kullanıyorum. Bu benim için işe yaramadı. Ancak, bu işe yarıyor -> <a href="javascript:"> click me </a>
John Henckel

Js devre dışı bırakılırsa ne olur?

5
Bu çözüm çapaları korumaz
thomas.winckell

77

Javascript kullanmanın bir yolu:

<a href="javascript:window.location.reload(true)">Reload</a>

4
Sorgu dizelerini ve bağlantılarını ( ?query=string#anchor) korur . Harika!
analog-nico

Kaydırma konumu da korunduğu için bu cevabı kullandım. Yeniden yükleme sözde "geri al" düğmesi olarak kullanıyorsanız kullanışlıdır.
igneosaur

Bu çözüm Tepki istemcisi üzerinde çalışıyor
Andrius

bunu html sözdiziminde nasıl kullanacağınızı biraz açıklayabilir misiniz?
Joanna Mikalai

Bir sorum var, trueparametre gerçekten window.location.reloadyöntemi kullanırken bu sorun için ne gitmek gerekir ? Bu, önbellekten çekilmekten kaçınan sert bir yenileme yapacaktır, bu da bazı durumlarda istediğiniz gibi olabilir, ancak çoğu durumda önbellekten yararlanmak istediğinizi düşünürdünüz, değil mi?
Stephen M Irving

31

Bunu yapabilirsin: <a href="">This page</a>

ancak GET ve POST verilerini koruduğunu sanmıyorum.


3
Ne yazık ki, IE'de çalışmıyor. Kimden: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - HREF boş bir değer olarak belirtilirse (href = "" veya href =), bağlantının yürütülmesi geçerli belgeyi içeren dizini kullanırsanız, yoksa belgedeki diğer öğelere ve sunucu ortamına bağlı olarak bir hata oluşturabilir.
Bohdan Lyzanets

12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>

12
PHP kullanmıyorum.
Tyilo

3
-1 fark, sizin durumunuzda çözüm olmayabilir (çünkü bir php çözümdür) ama burada en temiz çözüm olduğunu düşünüyorum. Bu href özniteliğine geçerli bir değer verdiği için en temiz değerdir. Mümkünse javascript kullanmaktan kaçının. Yani +1.
rofavadeka

ty çok yararlı. Neden başparmak aşağı düşüyor? Orijinal soru ya js de bahsetmiyor ve q burada çoğu JS referans ...
Andrew

@ Orijinal soru #html ve #hyperlink ile etiketlendi. Kuşkusuz "mevcut konuma işaret eden normal bir bağlantı" inanılmaz derecede belirsiz bir açıklama olsa da, bunun yalnızca istemci tarafında bir çözüm aramak olarak makul bir şekilde yorumlanabileceğinden eminim. Href PHP tarafından doldurulur bir çapa herhangi bir streç tarafından bir "normal bağlantı" değil, PHP kodu.
endemik

@endemic Javascript önermek "normal" ve php değil anlamsız bir görüştür. OP aslında normali javascript içermiyor ve mutlak bir yol kullanmıyor olarak tanımlıyor. İlginçtir ki cevapların çoğu javascripttedir.
Andrew

10

geçerli sayfayı yeniden yüklemek / yenilemek için bunu kullanın

<a href="#" onclick="window.location.reload(true);">

veya kullan

<a href="">refresh</a>

9
<a href=".">refresh current page</a>

veya parametreleri iletmek istiyorsanız:

<a href=".?curreny='usd'">refresh current page</a>

7

<a href="https://stackoverflow.com/">Clicking me refreshes the page</a>

<a href="?">Click Me To Reload the page</a>


3
Bu yalnızca index.html veya başka bir kök doc / url kullanıyorsanız
Stephen

@ Tabii ki. Oldukça haklısın. Görünüşe göre düşündüğümden daha zayıfım. Sadece çok hızlı bir şekilde test ettim ve kök salmış oldum.
Thomas Shields

Url gibi durumlarda çok iyi çalışır. / blablabla oysa. beni köküne geri getirirdi.
Ağustos'ta Augustin Riedinger

6

Bunu maalesef sadece HTML ile yapmanın küresel bir yolu yoktur. Sen yaparak deneyebilirsiniz <a href="">test</a>yalnızca bazı tarayıcılarda çalışır ancak.


IE'de çalışmaz. Kimden: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - HREF boş bir değer olarak belirtilirse (href = "" veya href =), bağlantının yürütülmesi geçerli belgeyi içeren dizini kullanırsanız, yoksa belgedeki diğer öğelere ve sunucu ortamına bağlı olarak bir hata oluşturabilir.
Bohdan Lyzanets

1
Test ettim ve tüm büyük modern tarayıcılarda (Chrome, Firefox, Edge, Opera, Safari) çalışıyor
Donald Duck

5

Yolu, parametreleri ve çapayı koruyan tamamen idempotent URL.

 <a href="javascript:"> click me </a>

sadece biraz küçük JS kullanır.

DÜZENLE: Bu sayfayı yeniden yüklemez. Hiçbir şey yapmayan bir bağlantıdır.


@FranciscoCorralesMorales, Üzgünüm ama sanırım soruyu yanlış anladım. OP'nin hiçbir şey yapmayan bir bağlantı kurmaya çalıştığını düşündüm. Ama şimdi OP'nin geçerli sayfayı yeniden yükleyecek bir bağlantı istediğini görüyorum. (Düzenleyeceğim).
John Henckel

Anında yardım sağlayabilecek bu kod snippet'i için teşekkür ederiz. Düzgün bir açıklama , bunun neden problem için iyi bir çözüm olduğunu göstererek eğitim değerini büyük ölçüde artıracak ve benzer, ancak aynı olmayan soruları olan gelecekteki okuyucular için daha yararlı hale getirecektir. Lütfen açıklama eklemek için cevabınızı düzenleyin ve hangi sınırlamaların ve varsayımların geçerli olduğunu belirtin.
Toby Speight


2

IE9'da kabul edilen cevap benim için çalışmadı, ancak bu işe yaradı:

<a href="?">link</a>

1
Sorgu dizesi parametrelerini korumakla ilgileniyorsanız bunun işe yarayacağını sanmıyorum.
WynandB

1
@WynandB doğru. bu tüm GET ve POST parametrelerini çöpe atacaktır. eğer istediğin buysa ya da umrunda değilse, bu hile harika çalışıyor.
Hanshenrik

2

Bir çözüm daha

<a href="javascript:history.go(0)">Reload</a>

Güzel çözüm! Bu yöntem için küçük bir ipucu 0'dır history.go().
Stephen M Irving

2
<a href="">Refresh!</a>

href=""Boş bırakın, sayfa yenilenir.
Bazı bilgiler formlar kullanılarak iletilirse de çalışır.


0

JS kullanarak sadece jekyll sitesindeki Etiketler sayfasında belirli bir kimliği olan div göstermek için kullanın. Aynı sayfada bir dizi bağlantı bulunduğunda, karşılık gelen öğeyi gösterirsiniz:

function hide_others() {
    $('div.item').hide();
    selected = location.hash.slice(1);
    if (selected) {
        $('#' + selected).show();
    }
    else {
    $('div.item').show();
    }
}

bağlantılar aşağıdaki gibi bağlantıları kullanır:

<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>

0

Aynı URL'ye bir POST yapmak için bir form kullanabilirsiniz.

 <form  method="POST" name="refresh" id="refresh">
 <input type="submit" value="Refresh" />
 </form>

Bu size geçerli sayfayı yenileyen bir düğme verir. Biraz sinir bozucu çünkü kullanıcı tarayıcı yenileme düğmesine basarsa bir do you want to resubmit the formmesaj alacak .


0

BU SORUNU ÇÖZMEK İÇİN HTML KULLANMAK
Kullanıyorum:

<a href="page1.html"> Link </a>

* page1.html -> üzerinde çalıştığınız dosyanın adını yazın (geçerli HTML dosyanız)


Lütfen yayını düzenleyin. Hangi programlama dilini kullandığınız, kodu nasıl uygulamaya çalıştığınız açık değildir.
Roee Anuar

Bu görevi yapmak için HTML kullandım .
Ayush Kumar

-1
<a href="/">Same domain, just like refresh</a>

Yalnızca web siteniz index.html, index.htm veya index.php (varsayılan herhangi bir sayfa) ise işe yarar.

Ama öyle görünüyor ki .aynı şey ve daha kabul edilmiş

<a href=".">Same domain, just like refresh, (more used)</a>

Hem alan adı hem de Chrome'da mükemmel çalışır http://vehttps://


-2

<a href="https://stackoverflow.com/home" target="_self">Reload the page</a>


Sorun url bilmiyorsak ... target = "_ self" ommited edilebilir
Hafenkranich

-3

Eğer php / smarty şablonları kullanıyorsanız, u böyle bir şey yapabilir:

<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>

-4

Target = "_ blank" eklemeniz yeterlidir; bağlantı orijinal sayfayı koruyan yeni bir sayfa açar.


Söylediğiniz gibi, bu hrefözellikte yeni bir pencere / sekmede belirtilen sayfa açılır . Bu hiçbir şekilde asıl soruya cevap vermiyor.
Philip Stratford
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.