Javascript recarga la página con valor hash

80

Estoy tratando de actualizar la página con esta declaración en un archivo javascript externo después de algunos procesos.

window.location.href = window.location.href

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

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

Y cambia el javascript a

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

Este código tampoco recarga / actualiza la página

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

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

Jonas T
fuente
¿Utiliza un archivo PHP para redirigir a la nueva página?
Derek 朕 會 功夫
No solo una página html. El propósito es actualizar la página después de ejecutar algunas funciones de JavaScript y volver a desplazarla a la posición de ese párrafo.
Jonas T
1
¿cómo se llama 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 del f5 en la actualización), este podría ser el problema
ajax333221

Respuestas:

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

Primero agregue el hash, luego vuelva a cargar la página. El hash permanecerá allí y la página se volverá a cargar.

Probado, funciona.


ps: si ya existe un hash en la URL, es posible que desee cambiarlo directamente a través de en location.hashlugar de .href.

Derek 朕 會 功夫
fuente
1
Otra cosa. Actualizó la página, pero incluye datos de publicación después de la recarga. ¿Cómo puedo limpiarlos? Esos datos de la publicación me impiden eliminar la fila de datos.
Jonas T
Por favor lee esto. stackoverflow.com/questions/2405117/… Incluye los datos POST que me impiden realizar otros eventos de devolución de datos.
Jonas T
Bueno, no sé mucho sobre POST. Sin embargo, puede hacer una nueva pregunta al respecto, si lo desea.
Derek 朕 會 功夫
1
Bueno, finalmente tuve que usar la cadena de consulta. "window.location.href = url +" & action = reload ";". Verifique la cadena de consulta de acción en javascripot en el evento de carga de página y haga esto "window.location.hash =" #uploadImgSection ";" No es la forma en que debería funcionar, pero tuve que hacerlo de esta manera para que esto funcione por ahora.
Jonas T
@Derek 朕 會 功夫 eres un genio :)
Attila Naghi
35

Quería actualizar esta pregunta porque descubrí que el uso window.location.href += "#mypara"seguirá agregando el parámetro a la URL incluso si existe. He encontrado que la mejor manera es usar

window.location.hash = "#mypara"
location.reload();
ug_
fuente
25

Esta es realmente una publicación antigua, aún 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 enviará todos los datos del formulario al servidor si se cargó previamente.
  2. location.hrefno actualizará la página hasta que haya un cambio de URL reconocido por el navegador. el cambio de hash (#paramname) no califica para el cambio de URL y, por lo tanto location.href+="#paramname", no funcionará.

Por lo tanto, location.href+="?anything#paramname"debe volver a cargar la página como una nueva solicitud, ya ?anythingque cambia la URL.

JayB
fuente
Buena respuesta. Aquí hay una versión preparada: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((new Date ()). GetTime ()% 1000000000) + '# myhash';
Johan
4
Otro: location.href + = '& rand =' + Math.rand () + '# myhash';
Johan
En mi opinión, esto responde mejor a la pregunta en comparación con las otras publicaciones. No requiere ningún cambio en el código subyacente que puede haber sido escrito como parte de una biblioteca, por ejemplo.
thekingoftruth
1
Johan, Math.rand () debe cambiarse a Math.random ()
tomJO
La respuesta más cercana (tal vez las otras respuestas fueron correctas en 2012, pero todas están equivocadas en 2018), pero tiene el problema de agregar entradas al historial de la barra de direcciones del usuario, lo cual no es bueno si solo estaba tratando de actualizar el mismo estado histórico ...
Glenn Maynard
0
var loc = location.hash;
location.hash = " ";
location.hash = loc;
Pandimanikandan A
fuente
Las respuestas de solo código no son muy útiles. ¿Qué está haciendo esto? ¿Por qué funciona?
random_user_name
-1

Prueba esto

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";
Hearaman
fuente
4
Esto tampoco recarga la página.
Jonas T
Las respuestas del código "Pruebe esto" no son muy útiles. ¿Que esta haciendo? ¿Por qué funciona?
random_user_name
-1

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();
Amit
fuente
-1

Esto funciona para mi

window.location.href = baseUrl + "#/m/team";
 location.reload();
MK Shah
fuente
-1

Esto funcionó para mi

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});
Kailash Chandra Panigrahi
fuente
Básicamente, esta parece ser 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 quiere el póster original, aunque edite la respuesta para aclarar que si Me equivoco.
blm