Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何覆盖<;基地>;标记而不移除标记本身?_Html - Fatal编程技术网

Html 如何覆盖<;基地>;标记而不移除标记本身?

Html 如何覆盖<;基地>;标记而不移除标记本身?,html,Html,我正在尝试向这个使用了标记的站点添加一些散列链接(以内容表的格式,以便于网页导航) 现在很明显,由于基本标记的缘故,其他每个相对标记都将相对于基本标记href。为了创建包含指向特定页面不同部分的链接的内部内容表,我需要获取默认URL(在基本标记生效之前),以便内部链接可以正常工作 有没有办法绕过基本标记并实现这一点?基本标记对文档的影响是全局的,覆盖基本标记影响的唯一方法是使用绝对URL 您可以使用JavaScript中的window.location获取页面本身的URL,以防通过HTTP检索文

我正在尝试向这个使用了
标记的站点添加一些散列链接(以内容表的格式,以便于网页导航)

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


有没有办法绕过基本标记并实现这一点?

基本标记对文档的影响是全局的,覆盖基本标记影响的唯一方法是使用绝对URL

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


现在通常不需要
base
标签。最好使用允许您从一个或多个基址构造地址的服务器端技术。因此,最好的方法很可能是去掉标记。

您可以使用一些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);
                }
            }
        }
    );

在链接之前添加一个
/
应该可以完成这项工作。假设您有
。如果使用
,则会加载
/assets/images/logo.png
。否则,如果您使用
,它将从根目录加载
/logo.png

作为一种轻微的替代方法,要使用本地URL并保留基本href,您可以尝试这样做

$('a.local')。每个(
函数(){
//获取href属性
var href=$(this.attr('href');
//它有a href吗?
如果(href){
var lastsslash=window.location.toString().lastIndexOf(“/”);
var new_href=window.location.toString().substr(0,lastsslash+1)+href;
$(this.attr('href',new_href);
}
});


“指向特定页面不同部分的内部链接”。。。你是在说散列链接吗,比如:
href=“#tab-2”
?你能举个例子吗?我使用的电子商务软件不幸依赖于
标签,所以它仍然存在。可能鲜为人知的事实是:
。/relative
如果基是子目录,则链接会使用基标记。以../开头的链接自然会使用包含路径部分中的段的基地址。然后,您不会覆盖
base
标记,只是在其影响下移动。@JukkaK.Korpela,是的,我们可以使用服务器标记生成链接。但这并不是反对使用
base href
的理由。实际上,
base href
在许多情况下都很有用。@Pacerier,
标记会影响文档中所有URL值属性。在编辑文档和添加相对URL(用于链接、图像引用或其他具有URL值属性的元素)时,很容易忘记这一点或忽略标记。感谢您的回答。定义变量时最好使用
var
,否则它们将在全局范围内定义。添加/是正确的一半。。。假设您只是跳过了协议并保留了双
/