Tautan untuk memuat ulang halaman saat ini

175

Apakah mungkin memiliki tautan normal yang menunjuk ke lokasi saat ini?

Saat ini saya telah menemukan 2 solusi, tetapi salah satunya termasuk JavaScript dan yang lain Anda harus tahu jalur absolut ke halaman:

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

Apakah ada cara untuk melakukan ini, tanpa menggunakan JavaScript atau mengetahui jalur absolut?

Tyilo
sumber

Jawaban:

198

Saya telah menggunakan:

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

Belum menemukan case dan / atau browser yang tidak berfungsi sebagaimana mestinya.

Periode berarti jalur saat ini. Anda juga dapat menggunakan ..untuk merujuk ke folder di atas jalur saat ini, misalnya, jika Anda memiliki struktur file ini:

page1.html
folder1
    page2.html

Anda kemudian dapat page2.htmlmenulis:

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

EDIT:

Saya tidak yakin apakah perilakunya telah berubah atau apakah selalu seperti ini, tetapi Chrome (dan mungkin orang lain) akan memperlakukan periode seperti dijelaskan di atas mengenai direktori , bukan file. Ini berarti bahwa jika Anda berada di http://example.com/foo/bar.htmlAnda benar-benar berada di direktori /foo/dan hrefnilai .in bar.htmlakan merujuk /foo/daripadabar.html

Anggap saja menavigasi sistem file di terminal; Anda tidak pernah bisa cdmenjadi file :)

EDIT 2:

Sepertinya perilaku menggunakan href="."tidak dapat diprediksi lagi, baik Firefox dan Chrome mungkin telah mengubah cara mereka menangani ini. Saya tidak akan sepenuhnya bergantung pada jawaban asli saya, tetapi lebih baik mencoba string kosong dan periode di browser yang berbeda untuk penggunaan khusus Anda dan pastikan Anda mendapatkan perilaku yang diinginkan.

Markus Amalthea Magnuson
sumber
25
Namun perlu dicatat bahwa data GET tidak disimpan dengan metode ini, anggap itu "hard reload". Menggunakan nilai href kosong akan menyimpan data GET, tetapi menghapus nilai hash (seperti # ini). Menggunakan # atau? karena nilai href akan menambahkan "sampah" ke URL baru. Saya telah menemukan bahwa menggunakan titik adalah cara terbersih untuk mencapai ulang.
Markus Amalthea Magnuson
5
Teknik ini tidak berfungsi untuk saya di mac chrome. Meskipun menggunakan "." sebagai anhor, berperilaku seolah-olah ".." dan tautan ke halaman induk. misalnya / admin / barang menjadi / admin. Adakah yang melihat perilaku ini?
Zac
3
Solusi ini salah. Juga di Chrome tidak berfungsi dan arahkan ke direktori induk. Anda harus menggunakan href kosong seperti yang disarankan oleh
@MarkusAmaltheaMagnuson
8
Ini tampaknya hanya berfungsi jika komponen jalur URL berakhir dengan a /.
Kos
6
Sampai hari ini, ini tidak berfungsi di Firefox atau Chrome. Kedua browser mereferensikan direktori induk (bukan halaman saat ini) menggunakan href = "."
jtubre
135

Tak satu pun dari jawaban lain akan melihat nilai querystring apa pun. Mencoba

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

Memang ini melibatkan javascript tetapi, kecuali jika skrip pengguna Anda dinonaktifkan, ini sangat mudah.

Simon Molloy
sumber
5
Tidak bekerja untuk saya (Google Chrome 32). Saya lebih suka <a href="javascript:location.reload();"> </a>
Gabriel
3
Saya menggunakan Google Chrome 36.0.1985 dan javascript: window.location.href = window.location.href berhasil. location.reload () memiliki efek yang disayangkan yaitu meminta pengguna jika mereka ingin me-refresh halaman di Firefox dan, tergantung pada skenario, mungkin tidak memberikan hasil yang diinginkan. Lihat stackoverflow.com/questions/2405117/… untuk diskusi lebih lanjut.
Simon Molloy
1
Saya menggunakan sudut dengan perutean. Ini tidak berhasil untuk saya. Namun, ini berhasil -> <a href="javascript:"> click me </a>
John Henckel
Bagaimana jika js dinonaktifkan?
5
Solusi ini tidak mempertahankan jangkar
thomas.winckell
77

Salah satu cara menggunakan javascript:

<a href="javascript:window.location.reload(true)">Reload</a>
Vinay Sahni
sumber
4
Mempertahankan querystrings dan jangkar ( ?query=string#anchor). Bagus!
analog-nico
Saya akhirnya menggunakan jawaban ini karena posisi gulir juga dipertahankan. Berguna jika Anda menggunakan ulang sebagai tombol "batalkan" semu.
igneosaur
Solusi ini BEKERJA pada klien React
Andrius
bisa tolong jelaskan bagaimana cara menggunakan ini dalam sintaks html?
Joanna Mikalai
Saya punya pertanyaan, apakah trueparameter benar-benar apa yang harus Anda gunakan untuk masalah ini ketika menggunakan window.location.reloadmetode ini? Itu akan membuatnya menjadi penyegaran keras yang menghindari menarik dari cache, yang mungkin apa yang Anda inginkan dalam beberapa keadaan, tapi saya pikir dalam sebagian besar situasi Anda ingin mengambil keuntungan dari cache, bukan?
Stephen M Irving
31

Anda bisa melakukan ini: <a href="">This page</a>

tapi saya tidak berpikir itu mempertahankan data GET dan POST.

Stephen
sumber
3
Sayangnya, itu tidak berfungsi di IE. Dari: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Jika HREF ditentukan sebagai nilai kosong (href = "" atau href =), mengeksekusi tautan mungkin menampilkan direktori yang berisi dokumen saat ini, atau mungkin menghasilkan kesalahan, tergantung pada elemen lain dalam dokumen dan lingkungan server.
Bohdan Lyzanets
12
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>
Hatzegopteryx
sumber
12
Saya tidak menggunakan PHP.
Tyilo
3
Melihat -1, mungkin bukan solusi dalam kasus Anda (karena ini adalah solusi php) tetapi saya pikir itu adalah solusi terbersih di sini. Karena ini memberikan nilai yang valid ke atribut href, itu adalah yang terbersih. Jika mungkin hindari javascript. Jadi +1.
rofavadeka
Mereka sangat membantu. Kenapa ini bisa diacungi jempol? Pertanyaan aslinya tidak menyebutkan js baik dan sebagian besar referensi q di sini JS ...
Andrew
@Andrew pertanyaan asli ditandai dengan #html dan #hyperlink. Meskipun diakui "tautan normal yang menunjuk ke lokasi saat ini" adalah deskripsi yang sangat kabur, saya cukup yakin itu dapat ditafsirkan secara wajar sebagai mencari solusi sisi-klien saja. Jangkar tempat href diisi oleh PHP bukanlah "tautan normal" oleh peregangan apa pun, itu kode PHP.
endemik
@ endemik Untuk menyarankan javascript adalah "normal" dan php bukan pendapat yang sia-sia OP sebenarnya mendefinisikan normal sebagai tidak termasuk javascript, dan tidak menggunakan jalur absolut. Yang cukup menarik, sebagian besar jawabannya ada dalam javascript.
Andrew
10

gunakan ini untuk memuat ulang / menyegarkan halaman saat ini

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

atau gunakan

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

atau jika Anda ingin memberikan parameter:

<a href=".?curreny='usd'">refresh current page</a>
Abie Abby Del Ray
sumber
7

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

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

Thomas Shields
sumber
3
ini hanya berfungsi jika Anda menggunakan index.html atau root doc / url lainnya
Stephen
@Stephen tentu saja. Anda benar. Rupanya saya lebih berkarat dari yang saya kira. Saya baru saja mengujinya sangat cepat dan kebetulan di root.
Thomas Shields
Bekerja sangat baik ketika url misalnya. / blablabla sedangkan. akan membawa saya kembali ke root.
Augustin Riedinger
6

Sayangnya tidak ada cara global untuk melakukan ini hanya dengan HTML. Anda dapat mencoba melakukan <a href="">test</a>tetapi itu hanya bekerja di beberapa browser.

Michael Walsh
sumber
Itu tidak berfungsi di IE. Dari: msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx - Jika HREF ditentukan sebagai nilai kosong (href = "" atau href =), mengeksekusi tautan mungkin menampilkan direktori yang berisi dokumen saat ini, atau mungkin menghasilkan kesalahan, tergantung pada elemen lain dalam dokumen dan lingkungan server.
Bohdan Lyzanets
1
Saya menguji dan bekerja di semua browser modern utama (Chrome, Firefox, Edge, Opera, Safari)
Donald Duck
5

URL yang benar-benar idempoten yang mempertahankan jalur, parameter, dan jangkar.

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

hanya menggunakan sedikit JS.

EDIT: ini tidak memuat ulang halaman. Ini adalah tautan yang tidak melakukan apa-apa.

John Henckel
sumber
@FranciscoCorralesMorales, Maaf tapi saya pikir saya salah paham pertanyaannya. Saya pikir OP sedang mencoba membuat tautan yang tidak melakukan apa-apa. Tapi sekarang saya melihat bahwa OP menginginkan tautan yang akan memuat ulang halaman saat ini. (Saya akan mengedit).
John Henckel
Terima kasih atas cuplikan kode ini, yang dapat memberikan bantuan segera. Penjelasan yang tepat akan sangat meningkatkan nilai pendidikannya dengan menunjukkan mengapa ini adalah solusi yang baik untuk masalah ini, dan akan membuatnya lebih bermanfaat bagi pembaca masa depan dengan pertanyaan yang serupa, tetapi tidak sama. Harap edit jawaban Anda untuk menambahkan penjelasan, dan berikan indikasi batasan dan asumsi apa yang berlaku.
Toby Speight
3

coba ini

<a href="javascript:window.location.href=window.location.href">
Cinta Kumar
sumber
dan di mana Anda meletakkan #?
FlowUI. SimpleUITesting.com
@ iOSCalendarpatchthecode.com mengapa Anda ingin menempatkan # ?? ini untuk memuat ulang halaman
Love Kumar
abaikan komentar saya. Saya membuat kesalahan.
FlowUI. SimpleUITesting.com
2

Sementara jawaban yang diterima tidak berfungsi untuk saya di IE9, ini berhasil:

<a href="?">link</a>
Menandai
sumber
1
Saya tidak berpikir ini akan berhasil jika Anda tertarik untuk melestarikan parameter querystring.
WynandB
1
@ WinandB sudah benar. ini akan membuang semua parameter GET dan POST. Namun jika itu yang Anda inginkan, atau jika Anda tidak peduli, trik ini sangat bagus.
hanshenrik
2

Satu lagi solusi

<a href="javascript:history.go(0)">Reload</a>
SashaPinsk
sumber
Solusi bagus! Satu tip kecil untuk metode itu adalah 0 adalah parameter default, jadi jika Anda mencoba memuat ulang, Anda bisa menulis: history.go()tanpa argumen.
Stephen M Irving
2
<a href="">Refresh!</a>

Biarkan href=""kosong dan itu akan menyegarkan halaman.
Juga berfungsi jika beberapa info dilewatkan menggunakan formulir.

tarun
sumber
0

Saya menggunakan JS untuk hanya menampilkan div dengan id tertentu di halaman tag di situs jekyll. Dengan satu set tautan di halaman yang sama, Anda menunjukkan elemen yang sesuai:

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

tautan menggunakan tautan seperti:

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

Anda dapat menggunakan formulir untuk melakukan POST ke URL yang sama.

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

Ini memberi Anda tombol yang menyegarkan halaman saat ini. Agak menyebalkan karena jika pengguna menekan tombol refresh browser, mereka akan mendapat do you want to resubmit the formpesan.

Tim Bray
sumber
0

AKU MENGGUNAKAN HTML untuk memecahkan masalah ini
Gunakan:

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

* page1.html -> ketikkan nama file yang sedang Anda kerjakan (file HTML Anda saat ini)

Ayush Kumar
sumber
Harap edit posting. Tidak jelas bahasa pemrograman yang Anda gunakan, bagaimana Anda mencoba menerapkan kode dan sebagainya.
Roee Anuar
Saya telah menggunakan HTML untuk melakukan tugas ini.
Ayush Kumar
-1
<a href="/">Same domain, just like refresh</a>

Tampaknya hanya berfungsi jika situs web Anda adalah index.html, index.htm atau index.php (halaman default apa pun).

Tapi sepertinya itu .adalah hal yang sama dan lebih diterima

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

Keduanya berfungsi sempurna di Chrome saat domain sama http://danhttps://

SSpoke
sumber
-2

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

Pramodh
sumber
Masalahnya adalah jika kita tidak tahu url ... target = "_ self" dapat
dihilangkan
-3

Jika Anda menggunakan templat php / smarty, Anda dapat melakukan sesuatu seperti ini:

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

Cukup tambahkan target = "_ blank" dan tautan akan membuka halaman baru dengan mempertahankan halaman asli.

ciccio
sumber
Seperti yang Anda katakan, ini hanya akan membuka halaman apa pun yang ditentukan dalam hrefatribut di jendela / tab baru. Ini sama sekali tidak menjawab pertanyaan yang sebenarnya.
Philip Stratford