我在应用程序中使用<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'));
}
});
答案 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)
不要使用相对网址。基本标记不会影响/home
或http://google.com
等网址,但会影响about/us
或users/12