2013-08-01 13 views
7

Próbuję zrobić pole ostrzeżenia po ponownym załadowaniu strony, ale to nie działa.
Popraw swój kod i powiedz, dlaczego?Jak wyświetlić alert po ponownym wczytaniu strony w JavaScript?

$("button").click(function(){ 
    window.location.reload(); 
    alert("Hello world"); 
}); 
+4

Uważają, że kiedy jesteś strona jest przeładowana, nie będzie automatycznie zapamiętać stan poprzedniej stronie. Kiedy twoja strona przeładuje wszystko, co zrobisz, wiąże wydarzenie kliknięciem i nic nie robi, dopóki ktoś nie kliknie Twojego przycisku. –

+0

Po przeładowaniu odświeżasz całą stronę, nie będziesz mieć oddzwonienia –

+0

Poprawiłem moją odpowiedź w poprawniejszy sposób – suhailvs

Odpowiedz

9

Można użyć sessionStorage:

$("button").click(function() { 
    sessionStorage.reloadAfterPageLoad = true; 
    window.location.reload(); 
}); 
$(function() { 
    if (sessionStorage.reloadAfterPageLoad) { 
     alert("Hello world"); 
     sessionStorage.reloadAfterPageLoad = false; 
    } 
}) 
+1

Witam, poprawiłem dla Ciebie formatowanie. W przyszłości byłoby wspaniale, gdybyś mógł preferować pełne słowa zamiast "sms speak" - na przykład "ty" zamiast "u". Dla czytelników jest to łatwiejsze - dziękuję i dziękuję za Twój wkład. –

+0

@BenjaminGruenbaum. Dzięki. Będę o tym pamiętać. :) –

+2

Hej Właśnie zauważyłem, że ten kod nie działa. 'jeśli (sessionStorage.reloadAfterPageLoad)' zawsze będzie wykonywane. Szczegółowe informacje można znaleźć na stronie http://stackoverflow.com/questions/39127730/jquery-if-condition-is-false- but-still-executed/39127785. – Adam

1

To się nazywa onload. Doszło do waaaaay przed przygotowaniem DOM, a DOM gotowy został faktycznie stworzony z dokładnie tego powodu, że onload czekał na obrazy.

window.onload = function() { 
    alert("It's loaded!"); 
    //dom not only ready, but everything is loaded 
} 

A rozwiązaniem jQuery Javascript jest wiązać zdarzenie window.onload w document.ready().

$(window).bind("load", function() { 
    // code here 
}); 
+0

Czy to praca po odświeżania strony? – Kobi

+0

Myślę, że tak, tak –

+0

@ Michael Worldthurner Czy to nie działa na początkowym etapie? Czy nie wyświetla komunikatu o pierwszej godzinie wejścia użytkownika na stronę? –

0

Niektóre brudny sposób robi to z ?reload ciąg w linku href jak request.GET w php

<a class="button" href="?reload/">reload and alert</a> 
<script type="text/javascript">   
    args = location.search.substr(1); 
    if (args=='reload/')alert('page reloaded'); 
</script> 
+1

Czy jesteś pewien, że sprawdzane są dokumenty załadowane ponownie, a nie tylko dokumenty? –

+0

@BenjaminGruenbaum teraz będzie działać – suhailvs

0

Krok 1: Wpisz swoją funkcję wyskakujące okienko z przyciskiem OK (stworzyłem sparametryzowaną funkcję, która przyjmuje komunikat, typ alarmu, nazwę metody

funkcja AlertMessageOk (str, alertType, metoda)
{

 $('#AlertMessage .divDialogElements').empty(); 

    $('#AlertMessage .divDialogElements').append(msg); 

    if (alertType == "success") { 
     $('#AlertMessage #modalAlertHeaderTitle').html("Success"); 
     $('#AlertMessage #modalAlertHeaderTypeClass').attr("class", "modal-header alert-success"); 
    } 
    else if (alertType == "error") { 
     $('#AlertMessage #modalAlertHeaderTitle').html("Error"); 
     $('#AlertMessage #modalAlertHeaderTypeClass').attr("class", "modal-header alert-danger"); 
    } 
    else if (alertType == "info") { 
     $('#AlertMessage #modalAlertHeaderTitle').html("Status"); 
     $('#AlertMessage #modalAlertHeaderTypeClass').attr("class", "modal-header alert-info"); 
    } 
    else if (alertType == "warning") { 
     $('#AlertMessage #modalAlertHeaderTitle').html("Warning"); 
     $('#AlertMessage #modalAlertHeaderTypeClass').attr("class", "modal-header alert-warning"); 
    } 

    $('#AlertMessage #btnAlertOk').attr("onclick", method); 

    $('#AlertMessage').modal('show'); 
} 

Krok 2: Na ajax response.result == true wywołanie funkcji AlertMessageOk. Przekazałem nazwę metody, aby odświeżyć stronę.

funkcja buttonActivate_onClick (storeID) {

 $.ajax({ 
     type: "POST", 
     url: "/configuration/activateStore", 
     timeout: 180000, 
     data: { StoreID: storeID }, 
     success: function (response) { 
      if (response.result == true) { 
       AlertMessageOk("Store configuration for Store ID " + storeID + " is successfully activated.", "success", "reloadPage();"); 
      } 
     }, 
     error: function (xhr, textstatus) { 
      AlertMessage("Error: " + xhr.statusText + " [" + xhr.status + "]", "error"); 

     } 
    }); 
    $('#wait_load').css("display", "none"); 
} 


function reloadPage() { 
    location.reload();   
} 
Powiązane problemy