我将所有网站的页面加载到主索引页面,并通过将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
然后点击后,网址变为:
http://www.mywebsite.com/#/about/#/about
等等,无限。
如何解决这个问题?
也许有一种方法可以清除哈希然后显示新哈希(也就是说,删除所有以#/开头的内容然后添加新哈希) - 或者可能有更好的解决方案?
答案 0 :(得分:3)
尝试var my_url = this.href.replace(/#.*/,'')
这将删除#
及之后的任何内容。
答案 1 :(得分:2)
如果您只想拆分当前网址的路径组件,请不要使用
var pathArray = this.href.split('/');
因为href
将包含完整路径,包括哈希。
使用
var pathArray = this.pathname.split('/');
代替。
答案 2 :(得分:1)
更改哈希不会刷新您的页面。它最多会强制浏览器滚动顶部。如果你想要你能做到:
window.location.hash = "";
要清空它(保留#
),如果您还从href中删除#
,那么您的页面将始终重新加载。