2012-05-16 17 views
65

Sto cercando di aggiornare la pagina con questa istruzione in file javascript esterno dopo alcuni processi.Javascript ricarica la pagina con il valore hash

window.location.href = window.location.href 

Ricarica perfettamente la pagina ma desidero scorrere fino alla posizione specifica dopo il caricamento. Così, ho messo questo sulla pagina.

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

e cambiare il javascript per

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

Questo codice non ricaricare/aggiornare la pagina o

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

Quando lo faccio, non ricaricare la pagina in tutti. C'è un modo per ricaricare la pagina con la posizione della barra di scorrimento?

+0

Utilizzare un file PHP per reindirizzare alla nuova pagina? –

+0

Nessuna pagina html. Lo scopo è aggiornare la pagina dopo aver eseguito alcune funzioni di javascript e farla tornare alla posizione di quel paragrafo. –

+1

come stai chiamando 'window.location.href'? se lo stai facendo al caricamento della pagina e stai premendo f5 e stai usando firefox (o un altro browser che scorre dove ti trovavi prima della f5 all'aggiornamento) questo _might_ è il problema – ajax333221

risposta

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

Prima aggiungere l'hash, quindi ricaricare la pagina. L'hash rimarrà lì e la pagina verrà ricaricata.

Testato, funziona.


ps: Se un hash esiste già l'URL, è possibile modificare direttamente tramite location.hash invece di .href.

+2

Sei un genio Derek. Funziona. Grazie uomo. –

+1

Un'altra cosa. Ha aggiornato la pagina ma include i dati post dopo il ricaricamento. Come posso pulirli? Questi dati post mi impediscono di eliminare la riga di dati. –

+0

Quali dati post? –

-1

Prova questa

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

Questo non ricarica neanche la pagina. –

19

Questo è davvero un vecchio post, vorrei ancora provare e rispondere con la giusta combinazione di risposte.

  1. location.reload() e location.reload(true) funziona come F5 sul browser. Questo invierà tutti i dati del modulo al server se precedentemente lo avessero caricato.
  2. location.href non aggiornerà la pagina finché non verrà rilevata una modifica URL dal browser. la modifica dell'hash (#paramname) non è idonea per la modifica dell'URL e, pertanto, solo il location.href+="#paramname" non funziona.

Quindi, location.href+="?anything#paramname" dovrebbe ricaricare la pagina come una nuova richiesta da ?anything è il cambiamento nella URL.

+0

Bella risposta. Ecco una versione cotta: window.location = ' & Rand =' + ((nuova data()). GetTime()% 1000000000) + '# myhash'; – Johan

+3

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

+0

IMO risponde alla domanda il meglio rispetto agli altri post. Ad esempio, non richiede modifiche al codice sottostante che potrebbe essere stato scritto come parte di una libreria. – thekingoftruth

25

Ho voluto aggiornare questa domanda perché ho scoperto che l'utilizzo di window.location.href += "#mypara" continuerà ad aggiungere il parametro all'URL anche se esiste.Ho trovato il modo migliore è quello di utilizzare

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

Questo ha funzionato per me:

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

Questo ha funzionato per me

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

Questo sembra essere fondamentalmente un modo più lungo di fare quello che altre risposte già fanno, in più non penso che includa la parte #myPara quindi non funzionerà come vuole il poster originale, anche se per favore modifica la risposta per chiarire che se sbaglio – blm

0

questo lavoro per me

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