Если с помощью JavaScript обновлять только якорь URL, то редиректа страинцы не произойдет. Это часто используется в разных механизмах передачи данных между iframe-мами, которые могут менять якоря друг-другу. Но может стоять и противоположная задача - при изменении якоря, обязательно делать редирект.
В таком случае нам поможет код:
path = "www.some-domain.com/index.html#value";
window.location.href = path;
window.location.reload(true);
У такого подхода есть один недочет: если вы так обновляете страницу у которой старый URL отличаеться от нового не только якорем, то произойдет редирект страницы саму на себя - всему виной строка 3, которая должна запускаться только если URL отличаются якорями.
Если вы хотите написать универсальный метод, то тогда придется немного усложнить код:
function redirectPage(url){
newUrlParts = url.split("#");
currentUrlParts = window.location.href.split("#");
window.location.href = url;
if(newUrlParts[0]==currentUrlParts[0])
window.location.reload(true);
}
Такой метод будет работать универсально.
Chrome 11
ОтветитьУдалить- - - - - - - - - - - - - - - -
window.location.reload(false); - НЕ работает
window.location.reload = false; - работает
спасибо за коментарий. Видимо для хрома reload доступен только как своство, а не метод
ОтветитьУдалитьОгромное спасибо)
ОтветитьУдалить