javascript - ¿Cuál es la diferencia entre "window.location.href" y "window.location.hash"?
jquery (7)
Aquí está el ejemplo simple de 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
- hash:
#!create
Aprendí "window.location.hash" como nuevo y probé en mi código jquery en lugar de "window.location.href" y ambos dieron los mismos resultados.
El 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?
La propiedad hash devuelve la parte de ancla de una URL, incluido el signo de almohadilla (#).
Para una URL como http://[www.example.com]:80/search?q=devmo#test
hash devuelve la parte de la URL que sigue al símbolo #, incluido el símbolo #. Puede escuchar el evento hashchange para recibir notificaciones de los cambios en el hash al admitir navegadores.
Returns: #test
href devuelve la URL completa.
Returns: http://[www.example.com]:80/search?q=devmo#test
Pruébelo, por ejemplo, http://.com/#Page
href = http://.com/#Page
hash = #Page
Una diferencia importante es que window.location.hash
está urldecoded, mientras que el identificador de fragmento en window.location.href
no está urldecoded. En otras palabras:
window.location.hash.split(''#'')[1] != window.location.href.split(''#'')[1]
Si la URL es http://example.com/page#3%3D3
entonces:
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])
href es la url
hash es solo el ancla después de la url
http: //www.xxxxxxx.com#anchor
http: //www.xxxxxxx.com#anchor es el href
"#anchor" es el hash
hash
y href
son ambas propiedades del objeto window.location
. hash
es la parte de la URL del #
on (o una cadena vacía si no hay #
), mientras que href
es una representación de cadena de toda la URL.