簡體   English   中英

清除#而不重新加載頁面

[英]Clear the # without reloading the page

我將所有網站的頁面加載到主索引頁面中,並通過將href分成多個段並使用.hash函數在主域名之后添加這些段來更新URL顯示,如下所示:

$('a').click(function(event) {
event.preventDefault();
var my_url = this.href;

var pathArray = this.href.split('/');

var newPathname = "";
for ( i = 3; i < pathArray.length; i++ ) {
  newPathname += "/";
  newPathname += pathArray[i];
}

$('body').load(my_url);
window.location.hash = newPathname;

可以,但是我遇到了一個小問題。 例如,當用戶訪問http://www.mywebsite.com/並單擊“關於”鏈接時,將加載所選頁面,並顯示地址欄:

http://www.mywebsite.com/#/about

但是,如果用戶以其他頁面開頭:

http://www.mywebsite.com/#/about

然后,單擊后,URL變為:

http://www.mywebsite.com/#/about/#/about

以此類推,直至無窮大。

如何解決呢?

也許有一種方法可以清除哈希,然后顯示新的哈希(也就是說,刪除以#/開頭的所有內容,然后添加新的哈希)–也許有更好的解決方案?

嘗試var my_url = this.href.replace(/#.*/,'')
這將刪除#及其之后的所有內容。

如果您只想分割當前網址的路徑部分,則不要使用

var pathArray = this.href.split('/');

因為href將包含完整的路徑,包括哈希。

采用

var pathArray = this.pathname.split('/');

代替。

更改哈希不會刷新您的頁面。 最多只能強制瀏覽器滾動到頂部。 如果您願意,可以執行以下操作:

window.location.hash = ""; 

清空它(保留# )(如果您還從href中刪除# ,則您的頁面將始終重新加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM