重定向javascript,替换url

时间:2013-12-02 03:08:25

标签: javascript redirect

我尝试将用户重定向到新页面,但

window.location =  

window.location.replace()

window.location.href = 

将新网址附加到当前网址并且不要替换它

这是我的代码

<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 />

例如,如果我的网址是

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

然后点击链接,然后我的新网址就像:

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

感谢您阅读

1 个答案:

答案 0 :(得分:3)

location.protocole的错字 - 应为location.protocol

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

在你的两个职能中。

由于我们已经开始使用location.searchdrying来简化您的代码,我们得到了:

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

然后,您可以使用set_lang('fr')set_lang('en')来调用它。

这只会更新URL的查询字符串部分,保留相同的协议,主机名和路径名。