使用javascript / jquery更改网址并使用该新网址重新加载页面

时间:2016-11-12 01:30:05

标签: javascript jquery window.location

我有2天试图解决这个问题。我想重新启动网址,如果再次点击,请不要添加相同的内容

我正在尝试更改网址并使用函数重新加载页面,但它毫无价值。

我总是在不刷新网站的情况下获取网址,或者我得到的网址重复如此www.mywebsite.com/#googtrans(en|es)#googtrans(en|es)

这是我的列表,当我点击任何链接时会触发功能

 <ul class="dropdown-menu dropdown-menu-left dropdown-language">
 <li><a class="english" onclick="changeLanguage('en');" >English</a></li>
 <li><a class="spanish" onclick="changeLanguage('es');">Spanish</a></li>
 <li><a class="chinesse" onclick="changeLanguage('en|zh-CN')">Chinesse</a></li>
 </ul>

<script type="text/javascript">

function changeLanguage(language) {

    window.location.search += "#googtrans(en|" + language +")";
};

3 个答案:

答案 0 :(得分:1)

您使用的是错误的表达方式。请尝试使用:

function changeLanguage(language) {
    window.location = "#googtrans(en|" + language +")";
};

如果您希望重新加载页面,则必须删除哈希#并将代码替换为: window.location += "/googtrans(en|" + language +")";

答案 1 :(得分:0)

另一种选择是:

function changeLanguage(language) {
    // get the origin of the url and define the language
    var host = window.location.origin;
    var language = 'french';

    //make sure the language is defined before this line
    window.location.replace(host + "#googtrans(en|" + language );
};

答案 2 :(得分:0)

&#39;#&#39;字符不属于网址的搜索字段,因为&#39;#&#39;是URL的可选片段标识符的起始字符。 &#39;#&#39;开始字符和片段标识符一起构成window.location.hash

的内容

但是浏览器在如何响应在window.location.search中插入哈希字符的尝试方面存在差异。 IE 11抛出一个错误,指出URL无效。 Firefox默默地转换了#&#39;#&#39;百分比编码&#39;%23&#39;另一个浏览器可能会愉快地把#&#39;#&#39;搜索字段中的字符,但将其视为&#34;片段的开头&#34;从window.location对象组装整个URL时的字段。

注意浏览器应该在搜索字段更改时从服务器重新加载页面,在客户端和服务器之间的本地或中间存储中丢弃缓存副本。

另一方面,仅对哈希片段的更改不会触发页面刷新,而是用于内部文档导航。浏览器在发出页面请求时将哈希片段的内容发送到服务器,但可以使用片段滚动浏览返回的文档。

在不知道服务器代码期望的情况下,很难说如何正确解决问题。但是,通常情况下,文本字符串值在客户端使用encodeURIComponent编码,在服务器端使用未编码。