Removing hash from URL

2019-02-11 00:33发布

问题:

After removing hash from URL using window.location.hash='' page getting reloaded in firefox.

EDIT

Example:

wwww.Mysite.come/#page=1

On a click of button I am removing hash value using following code

window.location.hash=''

After removing the hash page is getting reloaded in firefox.

I don't want to reload page I just want to remove hash from URL

How to fix it?

回答1:

From https://developer.mozilla.org/en/DOM/window.location:

Examples

Whenever a property of the location object is modified, a document will be loaded using the URL as if window.location.assign() had been called with the modified URL.

This question I think addresses what you want using jQuery:

Change hash without reload in jQuery

Other related questions:

Change the URL in the browser without loading the new page using JavaScript

How to remove the hash from window.location with JavaScript without page refresh?

How can I change Firefox window.location.hash without creating a page reload?



回答2:

Just in case somebody else is still looking for a solution to this. Try this when the page loads.

history.pushState("", document.title, window.location.pathname);


回答3:

If I understand correctly,

<a href="#someElementID" id="myLinkName">Some Text</a>

clicking the above link in a browser normally results in an added hash in the address bar, like www.websitename.com#someElementID <- this is what you're looking to prevent, yes?

The solution I just tested which is working and DOES NOT refresh the page is:

event.preventDefault();

This works in a 'click()' event that involves anchor tags that link to elements' id's, such as in the anchor tag example above. In action, it would look like this in your 'click()' event:

<script>
    $('#myLinkName').click(function(){
        event.preventDefault();
        //the rest of the function is the same.
    });
</script>

Now, clicking on the same link leaves the address bar with the same URL www.websitename.com, WITHOUT the added hash from clicking the anchor.



回答4:

We can remove/escape from appending the hash by returning false in click function.

<script>
    $('#add_user').click(function(){       
     //your custom function code here..
    return false;
});
</script>

<a id="add_user" href="#">Add Card</a>