2012-05-21 21 views
26

Me enteré "window.location.hash" nuevo y probado en mi código jquery en lugar de "window.location.href" y ambos dieron los mismos resultados.¿Cuál es la diferencia entre "window.location.href" y "window.location.hash"?

Código está aquí:

window.location.href = ($(e.currentTarget).attr("href")); 
window.location.hash = ($(e.currentTarget).attr("href")); 

¿Cuál es la diferencia entre ellos?

+0

http://www.w3schools.com/jsref/obj_location.asp –

+0

El valor de esta propiedad puede ser diferente en diferentes navegadores. Una forma segura de obtener la propiedad hash sería usar en su lugar: 'var hash = (location.href.split (" # ") [1] ||" ");' – naXa

Respuesta

46

Para una URL como http://[www.example.com]:80/search?q=devmo#test

de hash devolver la parte de la URL que sigue el símbolo #, incluyendo el símbolo #. Puede escuchar el evento hashchange para recibir notificaciones de cambios al hash en navegadores compatibles.

Returns: #test 

href devuelve la dirección URL completa.

Returns: http://[www.example.com]:80/search?q=devmo#test 

Read More

2

hash y href son ambas propiedades del objeto window.location. hash es la parte de la URL del # en (o una cadena vacía si no hay #), mientras que href es una representación de cadena de toda la URL.

+1

Bastante seguro de que incluye el caracter '#'. –

+0

@AmirRaminfar Efectivamente: corregido. – lonesomeday

2

La propiedad hash devuelve la parte de ancla de una URL, incluido el signo de almohadilla (#).

7

probarlo en, por ejemplo, http://stackoverflow.com/#Page

href = http://stackoverflow.com/#Page 
hash = #Page 
17

Una diferencia importante es que window.location.hash está serán decodificados, mientras que el identificador de fragmento en window.location.href no está serán decodificados.En otras palabras:

window.location.hash.split('#')[1] != window.location.href.split('#')[1] 

Si la URL es http://example.com/page#3%3D3 a continuación:

window.location.hash.split('#')[1] == '3=3' 
window.location.href.split('#')[1] == '3%3D3' 

En otras palabras:

window.location.hash.split('#')[1] == decodeURIComponent(window.location.href.split('#')[1]) 
+2

Esto no respondió a lo que vine a encontrar aquí, pero esto es útil saber de todos modos. Gracias –

+0

Decodificado 'window.location.hash' puede ser un error en su navegador, pero ahora no puedo reproducirlo ni en Chrome ni en FireFox. Por lo tanto, debe tener cuidado al usar esta propiedad ya que el valor podría ser diferente en diferentes navegadores. – naXa

-1

Aquí está el ejemplo simple para la diferencia entre window.location.href y window.location.hash

Para la URL http://www.manm.com/member/#!create:

  • href: http://www.manam.com/member/#!create
  • de hash: #!create
Cuestiones relacionadas