2012-05-16 16 views
65

Próbuję odświeżyć stronę z tej instrukcji w zewnętrznym pliku javascript po niektórych procesach.Javascript ponownie załadować stronę z wartością mieszania

window.location.href = window.location.href 

Idealnie odświeża stronę, ale po przeładowaniu chcę przewinąć do określonej lokalizacji. Tak, umieściłem to na stronie.

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

i zmienić JavaScript, żeby

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

Ten kod nie przeładować/odświeżyć stronę albo

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

Kiedy to zrobić, to nie przeładować stronę w wszystko. Czy istnieje sposób na ponowne załadowanie strony z pozycją paska przewijania?

+0

Użyj pliku PHP, aby przekierować na nową stronę? –

+0

Nie tylko strona html. Celem jest odświeżenie strony po uruchomieniu niektórych funkcji javascript i przewinięcie jej do pozycji tego akapitu. –

+1

jak się nazywasz 'window.location.href'? jeśli robisz to podczas ładowania strony i uderzasz w f5 i używasz firefox (lub innej przeglądarki, która przewija się w miejscu, w którym byłeś przed odświeżeniem f5), to może być problem. – ajax333221

Odpowiedz

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

Pierwszy dodać skrót, a następnie odśwież stronę. Wartość mieszania pozostanie tam, a strona zostanie ponownie załadowana.

Testowany, działa.


ps: Jeśli hash już istnieć w adresie URL, możesz bezpośrednio zmienić poprzez location.hash zamiast .href.

+2

Jesteś genialnym Derekiem. To działa. Dzięki. –

+1

Jeszcze jedno. Odświeżyło stronę, ale zawiera dane pocztowe po przeładowaniu. Jak mogę je wyczyścić? Te dane postów uniemożliwiają mi usunięcie wiersza danych. –

+0

Jakie dane pocztowe? –

-1

Spróbuj

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

To wcale nie przeładowuje strony. –

19

To jest naprawdę stary post, nadal próbowałbym odpowiedzieć właściwą kombinacją odpowiedzi.

  1. location.reload() i działa jak F5 na przeglądarce. Spowoduje to przesłanie wszystkich danych formularza z powrotem na serwer, jeśli wcześniej zostało to zrobione.
  2. location.href nie odświeży strony, dopóki zmiana adresu URL nie zostanie rozpoznana przez przeglądarkę. zmiana hash (#paramname) nie kwalifikuje się do zmiany adresu URL, a zatem po prostu wykonanie location.href+="#paramname" nie będzie działać.

Tak, powinien ponownie załadować stronę jako nowe żądanie, ponieważ zmiana adresu URL to ?anything.

+0

Dobra odpowiedź. Oto gotowana wersja: window.location = ' I rand =' + ((nowa data()). GetTime()% 1000000000) + '# myhash'; – Johan

+3

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

+0

IMO to odpowiedź na pytanie najlepsze w porównaniu do innych postów. Nie wymaga zmiany podstawowego kodu, który mógł zostać napisany na przykład w bibliotece. – thekingoftruth

25

Chciałem zaktualizować to pytanie, ponieważ odkryłem, że używanie window.location.href += "#mypara" będzie nadal dołączać parametr do adresu URL, nawet jeśli istnieje.Znalazłem lepszym sposobem jest użycie

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

Ten pracował dla mnie:

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

ten pracował dla mnie

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

Wydaje się to być w zasadzie dłuższym sposobem robienia innych odpowiedzi, a także, moim zdaniem, nie obejmuje części # myPara, więc nie będzie działać tak, jak chce tego oryginalny plakat, chociaż edytuj odpowiedź, aby wyjaśnić, że Jeśli się mylę. – blm

0

tej pracy dla mnie

window.location.href = baseUrl + "#/m/team"; 
location.reload(); 
Powiązane problemy