21

<base>我正在尝试向使用标签的该站点添加一些哈希链接(以内容表的格式,以便于网页导航) 。

现在显然由于基本标签,所有其他相对标签都将相对于基本标签href。为了让我创建这个包含指向特定页面不同部分的链接的内部内容表,我需要获取默认 URL(在基本标记生效之前),以便内部链接可以正常工作。

有没有办法绕过基本标签并完成此任务?

4

5 回答 5

11

标记的效果对base文档来说是全局的,而覆盖其效果的唯一方法<base href="...">是使用绝对 URL。

如果文档是通过 HTTP 检索的,您可以window.location在 JavaScript 中使用来获取页面本身的 URL。您可以使用它来构造绝对 URL。

这些base天通常不需要标签。最好使用允许您从一个或多个基地址构造地址的服务器端技术。所以很可能最好的方法是摆脱标签。

于 2012-09-06T16:32:03.340 回答
5

您可以使用一些 javascript 和 jQuery 来“修复”这个问题 -

// get all the internal anchors inside #article 
$('#article a').each(
        function() {
            // get the href attribute
            href = $(this).attr('href');
            // does it have a href?
            if (href) {
                // does it have an internal anchor?
                if (href.match(/#/i)) {
                    // append window.location and write back to the href Attribute
                    new_href = window.location + href;
                    $(this).attr('href', new_href);
                }
            }
        }
    );
于 2013-04-24T14:28:23.030 回答
2

作为一个小替代方案,拥有本地 url 并保留基本 href,您可以试试这个。

$('a.local').each(
    function () {
		// get the href attribute
		var href = $(this).attr('href');
		// does it have a href?
		if (href) {
			var lastSlash = window.location.toString().lastIndexOf("/");
			var new_href = window.location.toString().substr(0, lastSlash + 1) + href;
			$(this).attr('href', new_href);
		}
	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<base href="http://www.google.com">
<a class="local" href="mylocalpage.html">local page</a>
<a href="pageOnRemoteServer.html">remote page</a>

于 2016-07-12T15:04:00.523 回答
1

在链接之前添加一个/应该可以完成工作。假设你有<base href="/assets/images/" />. 如果您使用<img src="logo.png" />,则它会加载/assets/images/logo.png。否则,如果您使用,它将从根目录<img src="/logo.png" />加载。/logo.png

于 2014-05-31T12:53:35.997 回答
0

我需要包含一个相对样式表,忽略标签href中的。base我发现如果我将样式表放在标签link之前,则不会受到影响。basehref

我基于此信息:

如果指定了以下任一属性,则该元素必须位于具有 URL 属性值的其他元素之前,例如 's href 属性。

来自https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

我意识到这很可能需要您将a标签放在文档head中,然后以某种方式设置它们以显示在正确的位置。所以这个技巧可能不是很有用。

注意:文档说基本标签“必须”出现在使用 URL 的元素之前,因此根据规范,我所做的可能不合法。

于 2021-07-28T17:32:16.027 回答