2010-02-23 18 views
21

Tome este fragmento de código, por ejemplo:Javascript: ¿cómo realmente volver a cargar un sitio con una etiqueta de anclaje?

window.location.href = 'mysite.htm#images'; 

ya estar en el sitio mysite.htm y activar la recarga a través location.href no se recargue la página, pero salta a la fijación con nombre dentro de la URL.

Necesito un mecanismo para realmente volver a cargar la página. ¿Algunas ideas?

PD: He intentado otros métodos de localización, pero ninguno de ellos hace el truco :(

EDITAR
No cuelgue sobre el tipo de archivo htm que lo necesitaría para sitios dinámicos, así

..
+13

'onclick = alerta" ("Por favor presione F5 ') "' – nickf

+0

Entonces, ¿quieres volver a cargar la página Y luego saltar al nombre-ancla? – Pbirkoff

+1

@Pbirkoff Sí, exactamente. @nickf Hehe, me alegraste el día: D – aefxx

Respuesta

49

Después de establecer la dirección URL especificada en la ubicación, emita window.location.reload(true). Esto obligará al navegador a volver a cargar la página.

2

usted podría ser un tramposo y anexar una cadena de consulta aleatorizado, volver a dirigir a "mysite.htm? aleatorias = 289954034 # imágenes".

Pero si se trata de una página estática, como .htm implica, ¿qué es lo que necesita la recarga por si es para que tu onload Javascript pueda ocurrir por segunda vez, quizás solo necesites cambiar el flujo de tu aplicación.

+1

No dejes que la extensión te engañe. Puede reescribir urls para que se vean como si fueran archivos html. – Jage

+0

Es cierto, pero rara vez he visto a un reescritor elegir '.htm' sobre' .html'. Es por eso que elegí la palabra "implica" :) – Matchu

+0

No se trata de páginas estáticas vs. dinámicas cuando AJAX entra en juego. Piénsalo. – aefxx

7

usar la parte de consulta de la URL para añadir una cadena aleatoria:

// Use a timestamp to make sure the page is always reloaded 
window.location.href = 'mysite.htm?r='+(+new Date())+'#images'; 
-1

Prueba esto: window.location.href = 'mysite.htm?';

EDIT: esto sólo funcionará la primera vez; después de eso, el almacenamiento en caché toma efecto nuevamente.

2

Aunque siento que la respuesta de alemjerus es buena, no funciona cuando la nueva URL apunta a la página diferente, al menos en mi Chrome v40.

ejemplo, cuando la nueva dirección URL sólo tiene que añadir un ancla, que funciona bien:

var redirectToURL = '/questions/2319004/javascript-how-to-truly-reload-a-site-with-an-anchor-tag#answer-28621360'; 
window.location.href = redirectToURL; 
window.location.reload(true); 

Pero cuando apunta a una página diferente, el usuario todavía permanecer en la página actual después de la recarga. (Ejecutar los siguientes códigos en un lote, sin interrupción entre los location.href= y location.reload):

var redirectToURL = 'http://stackoverflow.com'; 
window.location.href = redirectToURL; 
window.location.reload(true); 

En este caso, retire los location.reload obras. Así que mi solución es comprobar si la nueva dirección URL está en la misma página:

var urlParser = document.createElement('a'); 
urlParser.href = redirectToURL; 
if (urlParser.origin + urlParser.pathname === location.origin + location.pathname) { 
    window.location.reload(true); 
} 

probado en Chrome y Safari, no han intentado IE. Amablemente avíseme si no funciona en ningún navegador importante.

-1

funciona con la mayoría de los navegadores Mozilla

<a title="Reset this Document" href="javascript:void()" onclick="window.location.href='#'"><font color="red">Reset</font></a> 

Código de línea:

window.location.href='#' 
or window.location.href='' 

El último código no funcionará adecuadamente con IE

Cuestiones relacionadas