我尝试将用户重定向到新页面,但
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
感谢您阅读
答案 0 :(得分:3)
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的查询字符串部分,保留相同的协议,主机名和路径名。