有没有一种方法可以在不重新加载页面的情况下修改当前页面的URL?

如果可能,我想访问#哈希之前的部分。

我只需要更改域之后的部分,所以我不会违反跨域策略。

 window.location.href = "www.mysite.com/page2.php";  // this reloads

当前回答

HTML5引入了history.pushState()和history.replaceState()方法,分别允许您添加和修改历史条目。

window.history.pushState('page2', 'Title', '/page2.php');

从这里了解更多信息

其他回答

您可以在应用程序的任何位置使用这个美丽而简单的功能。

function changeurl(url, title) {
    var new_url = '/' + url;
    window.history.pushState('data', title, new_url);
    
}

您不仅可以编辑URL,还可以同时更新标题。

可以添加定位标记。我在我的网站上使用这个,这样我就可以通过Google Analytics跟踪人们在页面上访问的内容。

我只是添加了一个锚标记,然后添加了我要跟踪的页面部分:

var trackCode = "/#" + urlencode($("myDiv").text());
window.location.href = "http://www.piano-chords.net" + trackCode;
pageTracker._trackPageview(trackCode);

使用HTML5历史API中的history.pushState()。

有关详细信息,请参阅HTML5历史API。

您的新url。

let newUrlIS =  window.location.origin + '/user/profile/management';

在某种意义上,调用pushState()类似于设置window.location=“#foo”,因为两者都会创建并激活与当前文档相关的另一个历史条目。但是pushState()有一些优点:

history.pushState({}, null, newUrlIS);

您可以签出根目录:https://developer.mozilla.org/en-US/docs/Web/API/History_API

如果你想做的是允许用户为页面添加书签/共享页面,而你不需要它恰好是正确的URL,并且你没有使用哈希锚来做任何其他事情,那么你可以分两部分来做;您使用该位置。然后在主页上执行检查,以查找其中包含哈希锚的URL,并将您重定向到后续结果。

例如:

用户位于www.site.com/section/page/4用户执行一些操作,将URL更改为www.site.com/#/section/page/6(带有哈希)。假设您已将第6页的正确内容加载到页面中,因此除了哈希之外,用户不会受到太大的干扰。用户将此URL传递给其他人,或为其添加书签其他人或同一用户稍后会访问www.site.com/#/ssection/page/6www.site.com/上的代码使用如下方式将用户重定向到www.site.com/section/page/6:

if (window.location.hash.length > 0){ 
   window.location = window.location.hash.substring(1);
}

希望这是有意义的!对于某些情况,这是一种有用的方法。