2016-11-12 28 views
0

我有2天的時間想弄明白這一點。我想reloasd的網址,如果你再次點擊不附加相同的東西使用javascript/jquery更改網址並使用該新網址重新加載頁面

我想改變的網址和重新加載頁面使用的功能,但它是毫無價值的。

我總是得到URL而無需刷新網站或出頭的我得到複製這樣的URL 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 +")"; 
}; 

+0

我只是好奇,但不能使用鏈接href而不是函數? –

回答

0

您使用的是錯誤的表達。嘗試改用:

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

如果你想重新加載頁面,你必須刪除哈希#與替換代碼: window.location += "/googtrans(en|" + language +")";

+0

打我:)但就是這樣。 –

+0

它的工作原理,但我希望它也刷新頁面與該網址 –

+0

@GilbertoQuintero如果你想頁面重新加載,你必須刪除#號的散列符號,因爲它阻止了頁面重新加載。 –

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); 
}; 
0

「#」個字符不屬於搜索 URL的字段,因爲'#'是URL的可選片段標識符的開始字符。 '#'起始字符和片段標識符一起構成window.location.hash

的內容但瀏覽器在響應嘗試在window.location.search中插入散列字符的嘗試方面有所不同。 IE 11會拋出錯誤,指出該URL無效。 Firefox默認將'#'轉換爲編碼'%23'的百分比。然而,另一個瀏覽器可能會愉快地將'#'字符放在搜索字段中,但在組裝來自window.location對象的整個URL時將其視爲「片段」字段的開頭。

注意當搜索字段發生變化時,瀏覽器應該從服務器重新加載頁面,丟棄客戶端和服務器之間的本地或中間存儲器中的緩存副本。

另一方面,單獨對散列片段的更改不會觸發頁面刷新並用於內部文檔導航。瀏覽器不要在發出頁面請求時向服務器發送散列片段的內容,但可能使用片段來滾動返回的文檔。

不知道服務器代碼期待什麼,很難說如何正確解決問題。但是,通常情況下,文本字符串值在客戶端使用encodeURIComponent進行編碼,並在服務器端進行未編碼。

相關問題