Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不重新加载页面的情况下清除#_Javascript - Fatal编程技术网

Javascript 在不重新加载页面的情况下清除#

Javascript 在不重新加载页面的情况下清除#,javascript,Javascript,我正在将所有网站的页面加载到主索引页面,并通过将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++ )

我正在将所有网站的页面加载到主索引页面,并通过将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;
$('a')。单击(函数(事件){
event.preventDefault();
var my_url=this.href;
var pathArray=this.href.split('/');
var newPathname=“”;
对于(i=3;i
这可以正常工作,但我面临一个小问题。当用户访问并单击“关于”链接时,所选页面将加载,地址栏将显示:

但如果用户从不同的页面开始:

单击后,url变为:

以此类推,直到无限

如何解决这个问题


也许有一种方法可以清除散列,然后显示新的散列(即,删除以#/开头的所有内容,然后添加新的散列)——或者有更好的解决方案?

试试
var my_url=this.href.replace(/#*/,'')


这将删除
#
及其后的任何内容。

更改哈希不会刷新页面。最多它会强制浏览器向上滚动。如果需要,可以执行以下操作:

window.location.hash = ""; 

若要清空它(保留
#
),如果同时从href中删除
#
,则页面将始终重新加载。

如果只想拆分当前URL的路径组件,则不要使用

var pathArray = this.href.split('/');
因为
href
将包含包含哈希的完整路径

使用


相反。

谢谢,@CBroe,这很有用。(我做得很辛苦,从结果数组中删除了0-3部分。-)实际上,似乎有一种方法可以在不使用哈希的情况下更新内容-我非常感谢有人能在这里向我解释这是如何做到的:@使用jquery你可以做到:
$(窗口)。卸载(函数(evt){evt.preventDefault()})
请你再告诉我一点关于这一点,@fmsf?这段代码应该放在哪里,它做什么?应该有代码在花括号之间吗?很漂亮。谢谢你,@Kolink!事实上,@Kolink,尽管你的答案是我要找的,但它揭示了网站的另一个问题。一个没有h在url中,如下所示:
http://www.mywebsite.com/about
-仍然会这样做:
http://www.mywebsite.com/about/#/about
-如何修改您的代码片段来解决这个问题?嗯……对此我们无能为力,因为这需要更改部分路径本身,强制重新加载.我在Facebook上看到过几次,所以我猜没有真正的解决办法!
var pathArray = this.pathname.split('/');