HiveBrain v1.2.0
Get Started
← Back to all entries
snippetjavascriptCritical

How do I modify the URL without reloading the page?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
pageurlhowmodifyreloadingthewithout

Problem

Is there a way I can modify the URL of the current page without reloading the page?

I would like to access the portion before the # hash if possible.

I only need to change the portion after the domain, so it's not like I'm violating cross-domain policies.

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

Solution

This can now be done in Chrome, Safari, Firefox 4+, and Internet Explorer 10pp4+!

See this question's answer for more information:
Updating address bar with new URL without hash or reloading the page

Example:

function processAjaxData(response, urlPath){
     document.getElementById("content").innerHTML = response.html;
     document.title = response.pageTitle;
     window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
 }


You can then use window.onpopstate or window.addEventListener to detect the back/forward button navigation:

window.addEventListener("popstate", (e) => {
    if(e.state){
        document.getElementById("content").innerHTML = e.state.html;
        document.title = e.state.pageTitle;
    }
});


For a more in-depth look at manipulating browser history, see this MDN article.

Code Snippets

function processAjaxData(response, urlPath){
     document.getElementById("content").innerHTML = response.html;
     document.title = response.pageTitle;
     window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
 }
window.addEventListener("popstate", (e) => {
    if(e.state){
        document.getElementById("content").innerHTML = e.state.html;
        document.title = e.state.pageTitle;
    }
});

Context

Stack Overflow Q#824349, score: 2465

Revisions (0)

No revisions yet.