2012-05-16 24 views
65

Estoy tratando de actualizar la página con esta declaración en el archivo javascript externo después de algunos procesos.Javascript recargar la página con el valor hash

window.location.href = window.location.href 

Se recarga perfectamente la página pero quiero desplazarme a la ubicación específica después de volver a cargar. Entonces, puse esto en la página.

<a name="uploadImgSection"></a> 

y cambiar el javascript para

window.location.href = window.location.href + "#mypara"; 

Este código no vuelve a cargar/actualizar la página o bien

window.location.hash = "#uploadImgSection"; 
window.location.href = window.location.href; 

Cuando hago eso, no vuelve a cargar la página en todas. ¿Hay alguna manera de que pueda volver a cargar la página con la posición de la barra de desplazamiento?

+0

¿Usar un archivo PHP para redirigir a la nueva página? –

+0

No solo la página html. El propósito es actualizar la página después de ejecutar algunas funciones de JavaScript y desplazarla de nuevo a la posición de ese párrafo. –

+1

¿cómo llamas 'window.location.href'? Si está haciendo eso en la carga de la página y está presionando f5 y está usando Firefox (u otro navegador que se desplaza donde estaba antes de la actualización de f5), este _might_ podría ser el problema – ajax333221

Respuesta

120
window.location.href += "#mypara"; 
location.reload(); 

Primera añadir el picadillo, vuelva a cargar la página. El hash permanecerá allí y la página se volverá a cargar.

Probado, funciona.


ps: Si un hash ya existen en la URL, es posible que desee cambiar directamente a través de location.hash en lugar de .href.

+2

Eres el genio Derek. Funciona. Gracias hombre. –

+1

Otra cosa. Sí actualizó la página, pero incluye datos de la publicación después de la recarga. ¿Cómo puedo limpiar esos? Esos datos de publicación me impiden borrar la fila de datos. –

+0

¿Qué datos de publicación? –

-1

probar este

  var urlString=window.location.href; 
      var url=urlString.split("#")[0]; 
      window.location.href = url + "#mypara"; 
+3

Esto tampoco recarga la página. –

19

Esto es realmente una publicación anterior, aún así trataría de responder con la combinación correcta de respuestas.

  1. location.reload() y location.reload(true) funciona como F5 en el navegador. Esto publicará todos los datos del formulario en el servidor si anteriormente lo hubiera hecho.
  2. location.href no actualizará la página hasta que el navegador reconozca un cambio en la URL. cambio en hash (#paramname) no cumple con los requisitos para el cambio de URL y, por lo tanto, simplemente haciendo location.href+="#paramname" no funcionará.

Así, location.href+="?anything#paramname" debe cargar la página como una nueva solicitud como ?anything es el cambio en la URL.

+0

Nice answer. Aquí hay una versión cocida: window.location = ' & Rand =' + ((new Date()). GetTime()% 1000000000) + '# myhash'; – Johan

+3

Otro: location.href + = '& rand =' + Math.rand() + '# myhash'; – Johan

+0

IMO esto responde la pregunta mejor en comparación con las otras publicaciones. No requiere ningún cambio en el código subyacente que se haya escrito como parte de una biblioteca, por ejemplo. – thekingoftruth

25

Quería actualizar esta pregunta porque encontré que el uso de window.location.href += "#mypara" seguirá añadiendo el parámetro a la url, incluso si existe.He encontrado la mejor manera es utilizar

window.location.hash = "#mypara" 
location.reload(); 
0

Esto funcionó para mí:

var tabValue = document.URL; 
window.location = tabValue.substring(0, tabValue.lastIndexOf("#")); 
window.location.hash = "#tabs-3"; //Whatever is your hash value 
location.reload(); 
1
var loc = location.hash; 
location.hash = " "; 
location.hash = loc; 
0

Esto funcionó para mí

$('body').on('click', '.className', function() { 
    var data = $(this).attr('href'); 
    alert(data); 
    window.location.reload(); 
}); 
+0

Esto parece ser básicamente una forma más larga de hacer lo que otras respuestas ya hacen, además, no creo que incluya la parte #myPara, por lo que no funcionará como lo quiere el póster original, aunque edite la respuesta para aclarar que si estoy equivocado – blm

0

Este trabajo para mí

window.location.href = baseUrl + "#/m/team"; 
location.reload(); 
Cuestiones relacionadas