URL片段和BASE标记

时间:2011-07-21 16:58:07

标签: javascript html url fragment-identifier

我在应用程序中使用<base>标记来简化开发。

我知道当锚只是一个网址片段时会发生“功能”,因为它会路由到<base>网址+片段。

我可以做些什么来规避这一点?我从来没有用window.location或Javascript中的任何东西捏过,而不是在它上面徘徊一段时间,我假设有人知道一个快速和肮脏的例子。

这可以规避吗?如果是这样,请告知。

我讨厌提出的问题表明没有尝试过,但我一直在搜索/阅读但没什么用的

另外;使用jQuery,所以欢迎使用vanilla Javascript或jQuery的任何示例


jQuery解决方案我一起入侵,不确定它是否可行作为永久解决方案,但想法?

$('a').each(function(index){
    if($(this).attr('href').indexOf('#') == 0){
        $(this).attr('href', (window.location.href).replace(/#.*$/, '')
            + $(this).attr('href'));
    }
});

2 个答案:

答案 0 :(得分:3)

好的,我想我现在明白了这个问题。

已在Google Chrome和Firefox中测试过。

在正文的末尾添加此javascript:

base=document.getElementsByTagName("base"); 
base=base[0].href;

links=document.getElementsByTagName('a');

for(index in links){
    if(links[index].href.indexOf(base+"#")==0){
        links[index].href=document.location+links[index].href.slice(links[index].href.indexOf("#"));
    }
}

答案 1 :(得分:1)

不要使用相对网址。基本标记不会影响/homehttp://google.com等网址,但会影响about/ususers/12