2013-12-02 2 views
1

Я пытаюсь перенаправить пользователя через новую страницу, ноперенаправления JavaScript, замените URL-адрес

window.location = 

или

window.location.replace() 

или

window.location.href = 

Append новый URL-адрес для текущего URL и не заменяйте его

Вот мой код

<div id="header"> 

    <script type="text/javascript"> 

    function set_lang_as_en() { 
     if (location.protocole) { 
      window.location = location.protocole + '//' + location.host + location.pathname + '?lang=en'; 
     } else { 
      window.location.href = location.host + location.pathname + '?lang=en'; 
     } 
    } 

    function set_lang_as_fr() { 
     if (location.protocole) { 
      window.location = location.protocole + '//' + location.host + location.pathname + '?lang=fr'; 
     } else { 
      window.location.href = location.host + location.pathname + '?lang=fr'; 
     } 
    } 

    </script> 

    <a href="#" onclick="set_lang_as_en();return false;" > 
     <img src="images/lang/usa.png" title="Change langage to english"></img></a> 

    <a href="#" onclick="set_lang_as_fr();return false;" > 
     <img src="images/lang/france.png" title="Changer la langue pour français"> </img></a> 

    <span id="title">TITLE</span> 
</div> 

<hr /> 

, например, если мой URL является

http://127.0.0.1/~user/index.php 

и я нажимаю на ссылку, то мой новый URL, как:

http://127.0.0.1/~user/127.0.0.1/~user/index.php?lang=en 

Спасибо за чтение

ответ

3

Typo at location.protocole - должно быть location.protocol.

   //here ↓ 
if (location.protocole) { 
    window.location = location.protocole + '//' + location.host + location.pathname + '?lang=en'; 
          //and here ↑ 

В обеих ваших функциях.

Так как мы в этом, упрощая ваш код немного с location.search и drying его по итогам мы получаем:

function set_lang(lang) { 
    location.search = '?lang=' + lang; 
} 

Тогда вы можете вызвать его с set_lang('fr') и set_lang('en').

Это будет только обновлять часть строки запроса URL-адреса, сохраняя тот же протокол, имя хоста и путь.

+0

Вы правы, это почему мне нужно «если», я приму свой ответ, когда смогу. Такая ошибка, которую довольно сложно отладить, спасибо – Epitouille

+0

@Epitouille Нет проблем, я обновил ответ и с более простым решением. –

Смежные вопросы