问题
Is it possible to have a normal link pointing to the current location?
I have currently found 2 solutions, but one of them includes JavaScript and in the other you have to know the absolute path to the page:
<a href="#" onclick="window.location.reload(true);">1</a>
<a href="/foobar/">2</a>
<a href="#">3 (of course not working)</a>
Is there any way of doing this, without using JavaScript or knowing the absolute path?
回答1:
I have been using:
<a href=".">link</a>
Have yet to find a case and/or browser where it does not work as intended.
Period means the current path. You can also use ..
to refer to the folder above the current path, for instance, if you have this file structure:
page1.html
folder1
page2.html
You can then in page2.html
write:
<a href="../page1.html">link to page 1</a>
Hope that helps!
EDIT:
I'm not sure if the behaviour has changed or if it was always like this, but Chrome (and maybe others) will treat periods as described above as regarding directories, not files. This means that if you are at http://example.com/foo/bar.html
you are really in the directory /foo/
and a href
value of .
in bar.html
will refer to /foo/
rather than bar.html
Think of it as navigating the file system in a terminal; you can never cd
into a file :)
EDIT 2:
It seems like the behaviour of using href="."
is not as predictable anymore, both Firefox and Chrome might have changed how they handle these. I wouldn't rely entirely on my original answer, but rather try both the empty string and the period in different browsers for your specific use and make sure you get the desired behaviour.
回答2:
None of the other answers will preseve any querystring values. Try
<a href="javascript:window.location.href=window.location.href">
Admittedly this does involve javascript but, unless your users have script disabled, this is pretty straightforward.
回答3:
One way using javascript:
<a href="javascript:window.location.reload(true)">Reload</a>
回答4:
You could do this: <a href="">This page</a>
but I don't think it preserves GET and POST data.
回答5:
<a href="<?php echo $_SERVER["REQUEST_URI"]; ?>">Click me</a>
回答6:
<a href=".">refresh current page</a>
or if you want to pass parameters:
<a href=".?curreny='usd'">refresh current page</a>
回答7:
use this for reload / refresh current page
<a href="#" onclick="window.location.reload(true);">
回答8:
<a href="/">Clicking me refreshes the page</a>
<a href="?">Click Me To Reload the page</a>
回答9:
There is no global way of doing this unfortunately with only HTML. You can try doing <a href="">test</a>
however it only works in some browsers.
回答10:
Completely idempotent url that preserves path, parameters, and anchor.
<a href="javascript:"> click me </a>
it only uses a little tiny bit of JS.
EDIT: this does not reload the page. It is a link that does nothing.
回答11:
try This
<a href="javascript:window.location.href=window.location.href">
回答12:
While the accepted answer didn't work for me in IE9, this did:
<a href="?">link</a>
回答13:
One more solution
<a href="javascript:history.go(0)">Reload</a>
回答14:
I use JS to show only the div with a specific id in the tags page in a jekyll site. With a set of links in the same page, you show the corresponding element:
function hide_others() {
$('div.item').hide();
selected = location.hash.slice(1);
if (selected) {
$('#' + selected).show();
}
else {
$('div.item').show();
}
}
links use links like:
<a href="javascript:window.location.href='/tags.html#{{ tag[0] }}-ref'; hide_others()">{{ tag[0] }}</a>
回答15:
You can use a form to do a POST to the same URL.
<form method="POST" name="refresh" id="refresh">
<input type="submit" value="Refresh" />
</form>
This gives you a button that refreshes the current page. It is a bit annoying because if the user presses the browser refresh button, they will get a do you want to resubmit the form
message.
回答16:
<a href="/">Same domain, just like refresh</a>
Seems to work only if your website is index.html, index.htm or index.php (any default page).
But it seems that .
is the same thing and more accepted
<a href=".">Same domain, just like refresh, (more used)</a>
Both work perfect on Chrome when domain is both http://
and https://
回答17:
<a href="/home" target="_self">Reload the page</a>
回答18:
If you are using php/smarty templates, u could do something like this:
<a href="{{$smarty.server.REQUEST_URI}}{if $smarty.server.REQUEST_URI|strstr:"?"}&{else}?{/if}newItem=1">Add New Item</a>
回答19:
Just add target="_blank" and the link will open a new page keeping the original page.
来源:https://stackoverflow.com/questions/8174282/link-to-reload-current-page