【发布时间】:2011-12-27 20:57:51
【问题描述】:
当我使用 HTML <base> 标记为页面上的所有相对链接定义基本 URL 时,锚链接也直接引用基本 URL。有没有办法设置仍然允许锚链接引用当前打开的页面的基本 URL?
例如,如果我在http://example.com/foo/ 有一个页面:
当前行为:
<base href="http://example.com/" />
<a href="bar/">bar</a> <!-- Links to "http://example.com/bar/" -->
<a href="#baz">baz</a> <!-- Links to "http://example.com/#baz" -->
期望的行为:
<base href="http://example.com/" />
<a href="bar/">bar</a> <!-- Links to "http://example.com/bar/" -->
<a href="#baz">baz</a> <!-- Links to "http://example.com/foo/#baz" -->
【问题讨论】:
-
您使用的是服务器端编程语言吗?您可以在链接中动态内联当前请求 URI。另见stackoverflow.com/questions/1889076/…
-
@BalusC 我不是,如果可能的话我宁愿避免它。
-
好吧,如果一切都已经是静态的,那么就使用
<a href="foo#baz">。 -
我不得不说这是大错特错,你将基础设置为
http://server/,然后告诉它导航到#baz,它会转到http://server/#baz,这就是相对URL的工作方式,并且这就是使用<base>所做的,它改变了相对 URL 的基础。如果这不是你想要的,你的链接不应该是相对的,或者它应该是相对于基础的 href (foo#baz) -
@JuanMendes 如果“foo”是一个未知的 URL,就会失败。