jQuery how to remove # from url

Go To StackoverFlow.com

2

My url generates like this: only shows in ie9

http://myurl.com/#/categories/posts

how do I remove # from url and make it like http://myurl.com/categories/posts on rest of my pages? thanks.

can i use like this? how can I detect # cause front page has no #.

if ($.browser.msie  && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#")) 
    {
        document.location.href = String( document.location.href ).replace( /#/, "" );
    }

to remove #/ used .replace( /#\//, "" ); as mentioned Kevin B

2012-04-05 21:19
by test
Are you adding that for purposes of maintaining a history? You're going to need to provide a bit more background on your configuration - Chords 2012-04-05 21:20
Yes, also where do you want to remove it from? In my answer I assumed the address bar, Jones in his assumed all links in the page, it's not quite clear - gotofritz 2012-04-05 21:24


6

It's not really a JQuery job - use normal Javascript for this.

document.location.href = String( document.location.href ).replace( /#/, "" );

EDIT Adding @Kevin B's answer for completeness

document.location.href = String( document.location.href ).replace( "#/", "" );
2012-04-05 21:20
by gotofritz
Mind if I ask, why the String constructor - nicosantangelo 2012-04-05 21:21
Legacy - I don't have old browsers at hand but I remember them complaining about document.location.href not being a string. Could be something veeery old like IE5 - gotofritz 2012-04-05 21:22
I tought it would be something like that :), good to know (I suppose - nicosantangelo 2012-04-05 21:26
actually it replaces like this: http://myurl.com//categories/posts how can I remove that extra '/ - test 2012-04-05 21:37
@Mercury /#/ becomes /#\// or /\/#/Kevin B 2012-04-05 21:42


4

Just add 'return false' for anchor tag's click event.

$("#selectorname").click(function(){
    if ($.browser.msie  && parseInt($.browser.version, 10) === 9 && window.location.href.indexOf("#")) 
    {
        document.location.href = String( document.location.href ).replace( /#/, "" );
    }
    return false; /* This prevents url from # */
});

or else

<a href="#" onclick='return false'>Hey click me, I'm # free</a>

or just make it simple

$("#selectorname").click(function(e){
   /* some statements */
   e.preventDefault();
});

This prevents the default action not to be triggered. Detailed info here

2012-12-28 05:51
by Karthikkumar


1

$("a").attr("href",$("a").attr("href").replace(/#/, "")); 
2012-04-05 21:23
by Jones
Ads