我试图添加一些散列链接(以内容表的格式,以便于网页导航)到本网站,其中使用<base>
标签。如何重写<base>标签而不移除标签本身?
现在显然由于基本标签,每隔一个相对标签将相对于基本标签href。为了让我用指向特定页面不同部分的链接创建这个内部内容表,我需要获取默认URL(在base标记生效之前),以便内部链接可以正常工作。
有没有办法避开基地标签并完成此操作?
我试图添加一些散列链接(以内容表的格式,以便于网页导航)到本网站,其中使用<base>
标签。如何重写<base>标签而不移除标签本身?
现在显然由于基本标签,每隔一个相对标签将相对于基本标签href。为了让我用指向特定页面不同部分的链接创建这个内部内容表,我需要获取默认URL(在base标记生效之前),以便内部链接可以正常工作。
有没有办法避开基地标签并完成此操作?
base
标记的效果对文档而言是全局的,覆盖<base href="...">
效果的唯一方法是使用绝对URL。
如果通过HTTP检索文档,您可以在JavaScript中使用window.location
来获取页面本身的URL。你可以用它来构建绝对的URL。
这些日子通常不需要base
标签。使用服务器端技术可以让您从一个或多个基地址构建地址,这样更好。所以很可能最好的办法是摆脱标签。
我使用的电子商务软件不幸*依赖于'
以../开头的链接自然地与包含路径部分中的段的基地址一起工作。然后,您不会覆盖“基本”标签,只是在其影响下移动。 –
非常感谢。我设法得到我的网页的默认网址。 – sSmacKk
你可以“修复”该用一些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);
}
}
}
);
感谢您的回答。定义变量时最好使用'var',否则它们将在全局范围内定义。 –
添加/
前链路应该做的工作。假设您有<base href="/assets/images/" />
。如果您使用<img src="logo.png" />
,则会加载/assets/images/logo.png
。否则,如果您使用<img src="/logo.png" />
,它会从根目录加载/logo.png
。
*添加一个/ *是一半正确的......假设你刚刚跳过了协议并离开了double'//'。 – yckart
作为一个轻微的选择,有本地url和保持基础href你可以试试这个。
$('a.local').each(
function() {
\t \t // get the href attribute
\t \t var href = $(this).attr('href');
\t \t // does it have a href?
\t \t if (href) {
\t \t \t var lastSlash = window.location.toString().lastIndexOf("/");
\t \t \t var new_href = window.location.toString().substr(0, lastSlash + 1) + href;
\t \t \t $(this).attr('href', new_href);
\t \t }
\t });
<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>
“内部链接指向特定页面的不同部分” ......你说的是哈希链接,如:'HREF = “#标签-2”'?你能举个例子吗? –