The fundamental problem with attempting to transparently support querystrings on the client-side -- touched on a bit in this article, but not explained completely, is this: Querystrings are a server-side convention for URLs containing parameters -- the browser doesn't traditionally parse them. If you ask for document.location.search, you'll get back an opaque string containing the query part that you'll have to parse…
> now you have the possibility to have to merge two different sources of query string Not really: if hashMode and queryStringInHash parseQueryStringFromHash else parseRealQueryString You don't have to merge. Just if you modify the query string and are in "hashMode" then just push the "real querystring" elements you parsed first into the "hashquery string".
Not impossible by any means, but, as Jeremy points out, it involves subtle details :)