Come get qualsiasi cosa che segue il dominio in un url, utilizzando Javascript

Qual è il modo migliore per get la parte "nulla" dopo la parte di dominio, utilizzando Javascript:

http://www.domain.com/anything http://www.domain.com/#anything http://www.domain.com/any/thing 

Per http://www.domain.com/#anything vorrei utilizzare window.location.hash . Ma per http://www.domain.com/canny vorrei usare window.location.pathname .

Sto usando:

 window.location.href.replace(window.location.origin, "").slice(1) 

Ci sono delle cave con questa soluzione? C'è un modo migliore?

Avvertenze:
location.origin non è supportto da IE.
Altri miglioramenti: .slice sta chiamando Array.prototype.slice . Una chiamata di metodo che richiede una ricerca prototipale è obbligata ad essere più lenta dell'accesso all'elemento che hai bisogno direttamente, in modo esplicito nel tuo caso, where il metodo della slice restituisce un arrays con solo un elemento in each caso. Così:

Potresti usare il nome del location.pathname , ma essere stanco: lo standard legge:

path
Questo attributo rappresenta la componente path dell'URI della posizione che consiste di tutto dopo l'host e la port fino a escludere il primo punto interrogativo (?) O il marchio hash (#).

ma penso che il modo più semplice, la maggior parte dei browser X per get ciò che si desidera è in realtà semplicemente facendo questo:

 var queryString = location.href.split(location.host)[1]; //optionally removing the leading `/` var queryString = location.href.split(location.host)[1].replace(/^\//,''); 

È molto simile a quello che hai adesso, ad exception del fatto che non sto utilizzando location.origin , che, come mostrato in MDN, non è supportto da IE di MS …
Un altro vantaggio è che non sto chiamando Array.prototype.slice , che restituisce un arrays e richiede una ricerca di prototipi, che è anche leggermente più lenta …

window.location.pathname + window.location.search + window.location.hash

Penso che questo sia un po 'meglio. Non dovrai usare nessuna function qui …