2013-08-01 36 views
7

Tôi đang cố gắng tạo hộp cảnh báo sau khi tải lại trang, nhưng nó không hoạt động.
Vui lòng sửa mã của tôi và cho tôi biết lý do?Làm cách nào để hiển thị cảnh báo sau khi tải lại trang bằng JavaScript?

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

Hãy xem xét rằng khi bạn đang trang được nạp lại, nó sẽ không tự động nhớ trạng thái của trang trước. Khi trang của bạn tải lại tất cả những gì nó sẽ làm là liên kết sự kiện nhấp chuột và không làm gì cho đến khi ai đó nhấp vào nút của bạn. –

+0

Khi bạn tải lại, bạn đang làm mới toàn bộ trang, nó sẽ không có gọi lại –

+0

tôi đã cập nhật câu trả lời của tôi theo cách chính xác hơn – suhailvs

Trả lời

9

Bạn có thể sử dụng sessionStorage:

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

Xin chào, tôi đã sửa một số định dạng cho bạn. Trong tương lai nó sẽ là tuyệt vời nếu bạn có thể thích từ đầy đủ hơn 'sms nói' - ví dụ "bạn" trên "u". Người đọc dễ dàng hơn - cảm ơn và cảm ơn sự đóng góp của bạn. –

+0

@BenjaminGruenbaum. Cảm ơn. Sẽ ghi nhớ điều này. :) –

+2

Hey Tôi chỉ nhận thấy rằng mã này không hoạt động. 'if (sessionStorage.reloadAfterPageLoad)' sẽ luôn luôn được thực hiện. Xem http://stackoverflow.com/questions/39127730/jquery-if-condition-is-false-but-still-executed/39127785 để biết chi tiết. – Adam

1

Gọi là onload. Nó đã đến waaaaay trước khi DOM sẵn sàng xung quanh, và DOM đã sẵn sàng thực sự được tạo ra vì lý do chính xác mà onload chờ đợi trên hình ảnh.

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

Và giải pháp Javascript jQuery là ràng buộc sự kiện window.onload trong document.ready().

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

Điều đó có hiệu quả sau khi làm mới trang không? – Kobi

+0

Tôi nghĩ rằng soo có –

+0

@MichaelUnterthurner Nó sẽ không hoạt động ngay từ đầu? Nó sẽ không hiển thị thông báo thời gian _first_ người dùng nhập vào trang? –

0

Một số phương pháp bẩn để làm việc đó với ?reload chuỗi trong liên kết href như request.GET trong 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

Bạn có chắc chắn rằng việc kiểm tra tài liệu được nạp lại không chỉ là tài liệu đã tải? –

+0

@BenjaminGruenbaum bây giờ nó sẽ hoạt động – suhailvs

0

Bước 1: Viết chức năng của riêng bạn cho cảnh báo bật lên với nút ok (tôi đã tạo chức năng tham số hóa chấp nhận thông báo, loại cảnh báo, tên phương thức.

chức năng AlertMessageOk (str, alertType, phương pháp)
{

 $('#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'); 
} 

Bước 2: Trên response.result ajax của bạn == gọi đúng với chức năng AlertMessageOk. Tôi đã chuyển tên phương thức để tải lại trang.

chức năng 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();   
} 
Các vấn đề liên quan