[英]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.