Cuál es la diferencia entre
window.location.href="http://example.com";
window.location.replace("http://example.com");
window.location.assign("http://example.com");
Leí en muchos foros que window.location.assign()
simplemente reemplaza el historial de sesión actual y, por lo tanto, el botón de retroceso del navegador no funcionará. Sin embargo, no puedo reproducir esto.
function fnSetVariable() {
//window.location.href = "http://example.com";
window.location.replace("http://example.com");
//window.location.assign("http://example.com");
}
<a onmouseover="fnSetVariable();"
href="PageCachingByParam.aspx?id=12" >
CLICK
</a>
javascript
dom
location
milan_9211
fuente
fuente
Respuestas:
Estos hacen lo mismo:
Simplemente navegan a la nueva URL. Por
replace
otro lado, el método navega a la URL sin agregar un nuevo registro al historial.Entonces, lo que ha leído en esas muchas formas no es correcto. El
assign
método agrega un nuevo registro al historial.Referencia: http://developer.mozilla.org/en/window.location
fuente
assign()
? De esta respuesta y los documentos, suena idéntico alocation = ...
.La parte de no poder usar el botón Atrás es una mala interpretación común. window.location.replace (URL) elimina la UNA entrada superior de la lista del historial de la página, sobrescribiéndola con la nueva entrada, de modo que el usuario no pueda volver fácilmente a esa ÚNICA página web en particular. La función NO borra toda la lista del historial de la página, ni hace que el botón Atrás no sea completamente funcional.
(Función NO, ni combinación de parámetros que yo sepa cambio puede o sobrescribir entradas de la lista historia que usted no es dueño de absolutamente ciertos navegadores - generalmente impelement esta limitación de seguridad simplemente ni siquiera definir cualquier operación que podría parecer a todos afectan cualquier entrada que no sea el primero en la lista del historial de la página. Me estremezco al pensar qué tipo de cosas cobardes podría hacer el malware si existiera tal función).
Si realmente desea que el botón Atrás no sea funcional (probablemente no sea "fácil de usar": piense de nuevo si eso es realmente lo que desea hacer), "abra" una ventana nueva. (También puede "abrir" una ventana emergente que ni siquiera tiene un botón "Atrás" ... pero las ventanas emergentes no son muy populares en estos días :-) Si desea que su página se muestre sin importar lo que haga el usuario ( una vez más, la "facilidad de uso" es cuestionable), configure un controlador window.onunload que simplemente recargue su página de nuevo clara desde el principio cada vez.
fuente