Фрагменты URL и тег BASE - PullRequest
2 голосов
/ 21 июля 2011

Я использую тег <base> в приложении для упрощения разработки.

Мне известна " функция ", которая возникает, когда якорь является только фрагментом URL-адреса, так как в нем выполняется маршрутизация к <base> URL + фрагменту.

Что я могу сделать, чтобы обойти это? Я никогда не обманывался с window.location или чем-то еще в Javascript, и вместо того, чтобы взломать его на некоторое время, я предполагаю, что кто-то знает о быстром и грязном, или примере.

Можно ли это обойти? Если это так, пожалуйста, сообщите.

( Я ненавижу задавать вопросы, которые предполагают, что не было предпринято никаких попыток, но я искал / читал без толку )

( Также; с использованием jQuery, поэтому приветствуются любые примеры, использующие ванильный Javascript или jQuery )


jQuery решение, которое я взломал вместе , не уверен, хотя оно жизнеспособно как постоянное решение, мысли?

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

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Хорошо, я думаю, теперь я понимаю вопрос.

Это было проверено в 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("#"));
    }
}
0 голосов
/ 21 июля 2011

Не используйте относительные URL.Базовый тег не влияет на URL-адреса, такие как /home или http://google.com, но он влияет на about/us или users/12

...