链接到当前页面


175

是否可以有一个指向当前位置的普通链接?

我目前找到了2个解决方案,但是其中一个包含JavaScript,在另一个中,您必须知道页面的绝对路径:

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

没有使用JavaScript或不知道绝对路径,有没有办法做到这一点?

Answers:


198

我一直在使用:

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

尚未找到无法正常使用的保护套和/或浏览器。

周期表示当前路径。..例如,如果您具有以下文件结构,也可以使用它来引用当前路径上方的文件夹:

page1.html
folder1
    page2.html

然后可以page2.html写成:

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

编辑:

我不确定行为是否已更改,或者是否一直这样,但是Chrome(可能还有其他)是否将上述期间视为目录,而不是文件。这意味着如果您http://example.com/foo/bar.html在目录中,那么您确实在目录中/foo/href.in 的值bar.html将引用/foo/而不是bar.html

可以将其视为在终端中浏览文件系统;你永远都不能cd进入文件:)

编辑2:

似乎使用行为href="."已不再可预测,Firefox和Chrome可能都已经改变了它们的处理方式。我不会完全依赖我的原始答案,而是尝试在不同的浏览器中同时使用空字符串和句点以实现特定用途,并确保获得所需的行为。


25
应该注意的是,尽管GET数据不是用这种方法保存的,但应将其视为“硬重装”。使用空的href值将保留GET数据,但清除哈希值(如#these)。使用#或?因为href值会将“垃圾”添加到新的URL。我发现使用period是实现重新加载的最干净的方法。
Markus Amalthea Magnuson,2012年

5
在Mac chrome上,这项技术不适用于我。虽然使用“。” 作为anhor,它的行为就像“ ..”并链接到父页面。例如/ admin / stuff变成/ admin。还有其他人看到这种行为吗?
Zac

3
该解决方案是错误的。同样在Chrome中不起作用,并指向父目录。您应该使用@MarkusAmaltheaMagnuson建议使用的空href
coorasse 2013年

8
这似乎仅在URL的路径部分以结束时才起作用/
科斯2014年

6
截至目前,该功能在Firefox或Chrome中不起作用。两种浏览器均使用href =“引用父目录(而不是当前页面)。”
jtubre

135

其他答案都不会包含任何查询字符串值。尝试

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

诚然,这确实涉及到javascript,但是,除非您的用户禁用了脚本,否则这非常简单。


5
不适用于我(Google Chrome 32)。我更喜欢<a href="javascript:location.reload();"> </a>
Gabriel

3
我正在使用Google Chrome 36.0.1985,并且javascript:window.location.href = window.location.href可以正常工作。location.reload()的不幸效果是提示用户是否要在Firefox中刷新页面,并且视情况而定,可能无法提供所需的结果。有关更多讨论,请参见stackoverflow.com/questions/2405117/…
西蒙·莫洛伊

1
我在路由中使用角度。这对我不起作用。但是,这确实起作用-> <a href="javascript:"> click me </a>
John Henckel

如果禁用了js怎么办?

5
此解决方案不保留锚点
thomas.winckell

77

一种使用javascript的方式:

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

4
保留查询字符串和锚点(?query=string#anchor)。大!
Analog-nico

我最终使用了这个答案,因为滚动位置也被保留了。如果将重新加载用作伪“撤消”按钮,则很有用。
igneosaur

此解决方案在React客户端上起作用
Andrius,

您能否详细说明如何在html语法中使用它?
乔安娜·米卡莱

我有一个问题,true在使用该window.location.reload方法时,参数真的应该用于此问题吗?这将使它进行一次硬刷新,避免从缓存中拉出,这在某些情况下可能是您想要的,但是我认为在大多数情况下您想利用缓存,不是吗?
Stephen M Irving

31

您可以这样做: <a href="">This page</a>

但我认为它不会保留GET和POST数据。


3
不幸的是,它在IE中不起作用。来自:msdn.microsoft.com/zh-cn/library/cc848861%28v=vs.85%29.aspx- 如果将HREF指定为空白值(href =“”或href =),则执行链接可能会显示包含当前文档的目录,否则可能会产生错误,具体取决于文档和服务器环境中的其他元素。
Bohdan Lyzanets

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

12
我没有使用PHP。
Tyilo

3
注意-1,在您的情况下可能不是解决方案(因为它是一个PHP解决方案),但我认为这是这里最干净的解决方案。这是因为它为href属性提供了有效的值,这是最干净的。如果可能,避免使用javascript。所以+1。
rofavadeka,2013年

ty非常有帮助。为什么这让大拇指朝下?原始问题也没有提到js,并且q的大部分都在此引用JS ...
Andrew

@Andrew原始问题被标记为#html和#hyperlink。尽管“指向当前位置的正常链接”是公认的模糊描述,但我敢肯定,可以合理地将其解释为寻求仅客户端解决方案。PHP填充href的锚点无论如何都不是“正常链接”,而是PHP代码。
地方性

@endemic建议javascript是“正常的”,而php不是毫无意义的观点。OP实际上将normal定义为不包含javascript,并且不使用绝对路径。有趣的是,大多数答案都在javascript中。
安德鲁(Andrew)

10

使用它来刷新/刷新当前页面

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

或使用

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


7

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

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


3
仅当您使用index.html或其他根doc / url时,此方法才有效
Stephen

@斯蒂芬,当然。你说得很对。显然我比我想像的还要生锈。我只是非常快速地对其进行了测试,并且碰巧是根。
Thomas Shields

当url例如时,效果很好。/ blablabla而。会让我重新扎根
Augustin Riedinger 2013年

6

不幸的是,没有全球性的方法只能使用HTML。您可以尝试执行此操作,<a href="">test</a>但这仅在某些浏览器中有效。


它在IE中不起作用。来自:msdn.microsoft.com/zh-cn/library/cc848861%28v=vs.85%29.aspx- 如果将HREF指定为空白值(href =“”或href =),则执行链接可能会显示包含当前文档的目录,否则可能会产生错误,具体取决于文档和服务器环境中的其他元素。
Bohdan Lyzanets

1
我进行了测试,并且可以在所有主要的现代浏览器(Chrome,Firefox,Edge,Opera,Safari)中使用
唐老鸭

5

完全幂等的url,保留路径,参数和锚点。

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

它只使用了一点点的JS。

编辑:这不会重新加载页面。这是什么都不做的链接。


@FranciscoCorralesMorales,对不起,但我想我误解了这个问题。我以为OP试图建立一个不起作用的链接。但是现在我看到OP需要一个链接来重新加载当前页面。(我会编辑)。
约翰·亨克尔

感谢您提供此代码段,它可能会立即提供帮助。通过说明为什么这是一个解决问题的好方法,适当的解释将大大提高其教育价值,并且对将来有相似但不相同的问题的读者来说更有用。请编辑您的答案以添加说明,并指出适用的限制和假设。
Toby Speight


2

尽管在IE9中接受的答案对我不起作用,但确实如此:

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

1
如果您有兴趣保留查询字符串参数,我认为这不会奏效。
WynandB 2015年

1
@WynandB是正确的。这将破坏所有的GET和POST参数。如果那是您想要的,或者如果您不在乎,则此技巧很有用。
hanshenrik

2

另一种解决方案

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

好的解决方案!该方法的一个小技巧是默认参数为0,因此,如果您尝试重新加载,则可以编写:history.go()不带参数。
Stephen M Irving

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

保留为href=""空白,它将刷新页面。
如果某些信息是通过表单传递的,也可以使用。


0

我使用JS在jekyll网站的标签页中仅显示具有特定ID的div。在同一页面中有一组链接,您显示相应的元素:

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

链接使用如下链接:

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

0

您可以使用表单对同一URL进行POST。

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

这为您提供了一个刷新当前页面的按钮。有点烦人,因为如果用户按下浏览器的刷新按钮,他们将收到一条do you want to resubmit the form消息。


0

我正在使用HTML来解决此问题
使用:

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

* page1.html->输入您正在处理的文件的名称(您当前的HTML文件)


请编辑帖子。目前尚不清楚您使用的是哪种编程语言,如何尝试实现代码等等。
Roee Anuar

我已经使用HTML来完成此任务。
Ayush Kumar

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

似乎仅在您的网站为index.html,index.htm或index.php(任何默认页面)时才起作用。

但似乎这.是同一件事,更被接受

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

当域http://和两者都存在时,两者都可以在Chrome上完美运行https://


-2

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


问题是,如果我们不知道该URL ... target =“ _ self”可以省略
Hafenkranich

-3

如果您使用的是php / smarty模板,则可以执行以下操作:

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

-4

只需添加target =“ _ blank”,链接将打开一个保留原始页面的新页面。


如您所说,这只会href在新窗口/标签中打开属性中指定的任何页面。这丝毫没有回答实际问题。
菲利普·斯特拉特福德,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.