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?

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.


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.


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>

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.


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>

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>

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

atau jika Anda ingin memberikan parameter:

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


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.


@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


2

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

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

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>

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.


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>

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.


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)


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


-2

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


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>

-4

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.