JavaScript przeładowuje stronę z wartością skrótu

80

Próbuję odświeżyć stronę tym oświadczeniem w zewnętrznym pliku javascript po niektórych procesach.

window.location.href = window.location.href

Doskonale ładuje ponownie stronę, ale po przeładowaniu chcę przewinąć do określonej lokalizacji. Więc umieściłem to na stronie.

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

I zmień javascript na

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

Ten kod również nie ładuje / odświeża strony

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

Kiedy to robię, w ogóle nie ładuje strony. Czy jest jakiś sposób na ponowne załadowanie strony z pozycją paska przewijania?

Jonas T
źródło
Czy użyć pliku PHP, aby przekierować do nowej strony?
Derek 朕 會 功夫
Nie tylko strona HTML. Celem jest odświeżenie strony po uruchomieniu niektórych funkcji javascript i przewinięcie jej z powrotem do pozycji tego akapitu.
Jonas T
1
Jak się nazywasz window.location.href? jeśli robisz to przy ładowaniu strony i naciskasz f5 i używasz przeglądarki Firefox (lub innej przeglądarki, która przewija miejsce, w którym byłeś przed f5 przy odświeżaniu), może to być problem
ajax333221

Odpowiedzi:

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

Najpierw dodaj hash, a następnie załaduj ponownie stronę. Hash pozostanie tam, a strona zostanie ponownie załadowana.

Przetestowane, działa.


ps: Jeśli hash już istnieje w adresie URL, możesz chcieć zmienić go bezpośrednio za pomocą location.hashzamiast .href.

Derek 朕 會 功夫
źródło
1
Jeszcze jedno. Odświeżył stronę, ale po przeładowaniu zawiera dane postów. Jak mogę je wyczyścić? Te dane postów uniemożliwiają mi usunięcie wiersza danych.
Jonas T
Proszę przeczytaj to. stackoverflow.com/questions/2405117/… Zawiera te dane POST, które uniemożliwiają mi wykonywanie innych zdarzeń ogłaszania zwrotnego.
Jonas T
Cóż, niewiele wiem o POST. Możesz jednak zadać nowe pytanie na ten temat, jeśli chcesz.
Derek 朕 會 功夫
1
Cóż, w końcu musiałem użyć ciągu zapytania. "window.location.href = url +" & action = reload ";". Sprawdź ciąg zapytania akcji w javascripot przy zdarzeniu ładowania strony i zrób to "window.location.hash =" #uploadImgSection ";". To nie tak powinno działać, ale musiałem to zrobić na razie.
Jonas T
@Derek 朕 會 功夫 jesteś geniuszem :)
Attila Naghi
35

Chciałem zaktualizować to pytanie, ponieważ stwierdziłem, że użycie window.location.href += "#mypara"będzie kontynuowało dołączanie parametru do adresu URL, nawet jeśli istnieje. Znalazłem lepszy sposób na użycie

window.location.hash = "#mypara"
location.reload();
ug_
źródło
25

To naprawdę stary post, nadal spróbuję odpowiedzieć właściwą kombinacją odpowiedzi.

  1. location.reload()i location.reload(true)działa jak F5 w przeglądarce. Spowoduje to wysłanie wszystkich danych formularza z powrotem na serwer, jeśli wcześniej to zrobiło.
  2. location.hrefnie odświeży strony, dopóki przeglądarka nie rozpozna zmiany adresu URL. zmiana w hashu (#paramname) nie kwalifikuje się do zmiany adresu URL i dlatego samo działanie location.href+="#paramname"nie będzie działać.

Dlatego location.href+="?anything#paramname"należy ponownie załadować stronę jako nowe żądanie, tak jak ?anythingzmienia się adres URL.

JayB
źródło
Niezła odpowiedź. Oto gotowa wersja: window.location = '<? Php echo $ _POST [' back ']?> & Rand =' + ((new Date ()). GetTime ()% 1000000000) + '# myhash';
Johan
4
Kolejny: location.href + = '& rand =' + Math.rand () + '# myhash';
Johan
IMO to najlepiej odpowiada na pytanie w porównaniu z innymi postami. Nie wymaga zmian w kodzie źródłowym, który mógł zostać napisany na przykład jako część biblioteki.
thekingoftruth
1
Johan, Math.rand () należy zmienić na Math.random ()
tomJO
Najbliższa odpowiedź (może inne odpowiedzi były poprawne w 2012 r., Ale wszystkie są błędne w 2018 r.), Ale ma problem z dodawaniem wpisów do historii paska adresu użytkownika, co nie jest dobre, jeśli próbujesz tylko odświeżyć ten sam stan historii ...
Glenn Maynard
0
var loc = location.hash;
location.hash = " ";
location.hash = loc;
Pandimanikandan A
źródło
Odpowiedzi zawierające tylko kod nie są zbyt przydatne. Co to robi? Dlaczego to działa?
random_user_name
-1

Spróbuj tego

           var urlString=window.location.href;
           var url=urlString.split("#")[0];
           window.location.href = url + "#mypara";
Hearaman
źródło
4
To też nie powoduje ponownego załadowania strony.
Jonas T
Odpowiedzi zawierające tylko kod „Spróbuj tego” nie są zbyt przydatne. Co to robi? Dlaczego to działa?
random_user_name
-1

To zadziałało 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();
Amit
źródło
-1

Ta praca dla mnie

window.location.href = baseUrl + "#/m/team";
 location.reload();
MK Shah
źródło
-1

To zadziałało dla mnie

$('body').on('click', '.className', function () {
    var data = $(this).attr('href');
    alert(data);
    window.location.reload();
});
Kailash Chandra Panigrahi
źródło
Wydaje się, że jest to w zasadzie dłuższy sposób robienia tego, co inne odpowiedzi już robią, a ponadto nie sądzę, aby zawierał część #myPara, więc nie będzie działać tak, jak tego chciał oryginalny plakat, chociaż edytuj odpowiedź, aby wyjaśnić, że jeśli Nie mam racji.
blm