Does window.location.hash
contain the encoded or decoded representation of the url part?
When I open the same url (http://localhost/something/#%C3%BC
where %C3%BC
translates to ü
) in Firefox 3.5 and Internet Explorer 8, I get different values for document.location.hash
:
#%C3%BC
#ü
Is there a way to get one variant in both browsers?
Unfortunately, this is a bug in Firefox as it decodes location.hash
an extra time when it is accessed. For example, try this in Firefox:
location.hash = "#%30";
location.hash === "#0"; // This is wrong, it should be "#%30"
The only cross-browser solution is to just use (location.href.split("#")[1] || "")
instead for getting the hash. Setting the hash using location.hash
seems to work correctly for all browsers that support location.hash
though.