web-dev-qa-db-fra.com

emplacement de la fenêtre javascript href sans hachage?

J'ai:

var uri = window.location.href;

Qui procure http://example.com/something#hash

Quelle est la façon la meilleure et la plus simple d'obtenir le chemin complet sans le #hash?

uri    = http://example.com/something#hash
nohash = http://example.com/something

J'ai essayé d'utiliser location.Origin+location.pathname qui ne fonctionne pas dans tous les navigateurs. J'ai essayé d'utiliser location.protocol+'//'+location.Host+location.pathname qui ressemble à une sorte de solution de merde pour moi.

Quelle est la meilleure et la plus simple façon de le faire? peut-être que je demande location.hash et essaie de substr () cela depuis l'uri?

69
matt

location.protocol+'//'+location.Host+location.pathname Est la syntaxe correcte si vous ne vous souciez pas du numéro de port ou de la chaîne de requête

Si vous vous en souciez:

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

location.protocol+'//'+
  location.Host+
  location.pathname+
 (location.search?location.search:"")

ou

location.protocol+'//'+
  location.hostname+
 (location.port?":"+location.port:"")+
  location.pathname+
 (location.search?location.search:"")

Vous pouvez aussi simplement faire une location.href.replace(location.hash,"")

73
mplungjan
var uri = window.location.href.split("#")[0];

// Returns http://example.com/something

var hash = window.location.href.split("#")[1];

// Returns #hash
70
Nick Brunt
location.href.replace(location.hash,"")
13
Quentin

La voie universelle est-elle aussi la plus petite?

location.href.split(/\?|#/)[0]
6
Alain Beauvois

Solutions plus courtes:

  • sans chaîne de requête et hachage location.href.split(location.search||location.hash||/[?#]/)[0]

  • uniquement sans hachage location.href.split(location.hash||"#")[0]

(J'utilise habituellement le premier)

6
Sebastien P.