如何在不知道网页名称的情况下将网页与自身链接?

9
为了将一个页面链接到自身(例如 http://example.com/folder/ThisPage.html),我们可以简单地创建如下的 href:

ThisPage.html:

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

这样做虽然有效,但缺点是需要在文件名更改时进行更新。例如,如果文件名更改为ThatPage.html,我们的href需要相应更改为<a href="ThatPage.html">Link</a>
我正在寻找一种没有这个缺点的替代方法。我尝试过:
- <a href="?">Link</a>。不起作用,因为它会将“空查询部分”(问号)附加到URL上。 - <a href="">Link</a>。在某些浏览器(如Opera)上不像<a href="ThisPage.html">Link</a>那样起作用。
我们如何将页面链接到自身,而无需在页面名称更改时更新相关部分? 注意:不允许使用JavaScript。

4
如果一个页面包含指向自身的链接,你希望它去做什么?你期望它跳转到网站的特定部分还是打开一个新页面? - scrappedcola
1
@scrappedcola。它加载一个与自身URL相同的页面。(有些人可能称之为“刷新”) - Pacerier
1
这个问题在我看来很好,我猜想可能是有人只看到它是一个HTML问题,就下意识地投了反对票,而没有真正阅读它。 - Justin
1
好奇,<a href=""> 在哪些浏览器上不起作用? - JJJ
@Bart,所以 <a href="">Link</a> 不能满足要求,至少在主流浏览器中不能像 <a href="ThisPage.html">Link</a> 那样工作。 - Pacerier
显示剩余7条评论
8个回答

5
只需使用<a href="?">链接</a>。没人关心附加在URL上的问号。它满足了要求,这才是最重要的,对吧?

. 会省略文件名(example.com/foo/bar.html 会变成 example.com/foo/)。 - JJJ
啊,好的。我把我的答案改回它的原始形式了 ;_) - Bart
@Bart,对我们来说这只是一个问号。但对服务器来说,这是完全不同的页面。 - Pacerier
@Pacerier - 不应该是这样的。如果是这样的话,那么服务器配置有问题。?表示查询字符串的开始,而不是位置。 - Bart
1
@Bart,因为即使你的服务器返回相同的资源,我所在的服务器没有配置来这样做。它会破坏我的页面,包括损坏缓存等方面。 - Pacerier
显示剩余3条评论

3

非常简单,只需将href=""留空即可。就是这样:

<a href="">Click me to refresh page</a>

但这不一定是一个好主意,因为缓存可能并没有被清除,无论你需要它什么用途,如果页面在此期间发生了更改,尽管重新加载,更改可能不会出现。也许更好的想法是使用javascript代码location.reload();。但其他网站已经有足够的解释,所以我在这里不会进行解释。当然,你也可以使用问号(?),但这是不必要的,实际上并不是用来这个目的,具体根据程序而定可能会导致问题。


这是一份常见超链接的简短列表:

指向根页面

<a href="/">Link</a>

指向相对于根页面的文件

<a href="/file.ext">Link</a>

相对于当前文件指向一个文件

<a href="file.ext">Link</a>

指向上一个文件夹中的文件

<a href="../file.ext">Link</a>

指向上上级文件夹中的文件

<a href="../../file.ext">Link</a>

指向文件夹下的文件

<a href="folder/file.ext">Link</a>

指向当前文件的指针

<a href="">Link</a>

指向不同主机但使用相同协议的页面

<a href="//domain.tld/file.ext">Link</a>

我希望我的回答能够帮助到一些人,因为我是通过搜索引擎找到的,并且发现没有正确的答案。这也是我在这里的第一个回答。

编辑(两年半后):

我刚刚搜索了官方规范,这就是我找到的:

同一文档引用

“不包含URI的URI引用是对当前文档的引用。换句话说,在文档中的空URI引用被解释为对该文档开头的引用,[...]”

这意味着,正如我所说,这种超链接并不一定重新加载页面。作为纯HTML解决方案,这是不可能的。

https://datatracker.ietf.org/doc/html/rfc2396#section-4.2


1
如果你想让它不跳转到任何地方,可以使用:

<a href="javascript:;">link</a>

但如果你想让页面重新加载,那么你需要使用JavaScript。 如果你想要重新加载页面,你可以使用Meta刷新标签。

http://www.w3.org/TR/WCAG20-TECHS/H76.html


Meta refresh 还要求我们明确声明 URL... 是的,依赖 JavaScript 肯定可以解决问题(因为我们可以读取 window.location),但我想知道是否存在非 JS 解决方案。 - Pacerier

0

只需要这样做:

<a href = "/">This Very Site</a>

来源:我在Matthew Alger的网站的源代码中看到了这个。你可以自己去看看!


这个不起作用。试一下。它链接到顶部页面 http://example.com/ 而不是当前页面(除非当前页面也是顶部页面)。 - Pacerier

0
如果你想要重新加载页面,你真的应该看一下 JavaScript。这是最好的方法。

是的,依赖JavaScript肯定可以解决问题(因为我们可以读取window.location),但我想知道是否存在非JS解决方案。 - Pacerier

0

为什么不试试<a href="./"></a>呢?

我查了一些资料,结果发现./指的是当前目录。


-1
您可以直接在同一页上创建一个链接。

1
是的,但正如问题所述,这种方法的缺点是在页面名称更改时必须进行更新。 - Pacerier

-3

给你。希望这就是你要找的。

    <a href="#">Link</a>

2
这只会跳转到页面顶部,不会触发页面刷新。 - JJJ
阅读这篇文章加粗,你尝试使用完整的URL了吗?<a href=http://www.fullurl.com/yourpage.html>刷新</a> - rlwheeler
1
你读了问题吗?OP明确不想在代码中硬编码完整的URL。 - JJJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接