Đối với những gì bạn đang tìm kiếm, cách tốt nhất để kiểm soát việc làm mới trang web là với chức năng onKeyDown. Rất tiếc, nhấn nút làm mới trực tiếp từ trình duyệt của bạn sẽ tải lại DOM, vì vậy về mặt kỹ thuật không có cách nào để ngăn không cho làm mới từ hành động này.
Đi vào cùng một vấn đề, tôi tìm thấy trang web này http://asquare.net/javascript/tests/KeyCode.html nơi bạn có thể xác minh phản hồi của trình duyệt của bạn với các sự kiện bàn phím. Ở đây bạn có thể bắt đầu tìm ra lý do tại sao onKeyDown là lựa chọn tốt nhất. Chrome không phản ứng với hàm onKeyPress.
Bạn chỉ cần một biến để kiểm soát hành động làm mới. Nếu người dùng nhấn phím, thì hành động onBeforeUnload sẽ không được thực thi.
var refresh = false; //Control variable to control refresh access
j$(window).bind('beforeunload', function(){
if (refresh == false) { // If F5 is not pressed
return "Do you really want to leave?";
}
});
j$(window).keydown(function(event) {
if (event.keyCode == 116) { // User presses F5 to refresh
refresh = true;
}
});
Cảm ơn, chúng ta có thể làm cho nó xảy ra bằng cách đặt CỜ, nếu có, làm thế nào tôi có thể xác định trang đang được làm mới bằng cách nhấn F5? – mymotherland
@ Dinesh, toàn bộ câu trả lời của tôi là điều này không thể được thực hiện bởi vì bạn không thể phân biệt giữa người dùng nhấn F5 và người dùng nhấp vào liên kết để điều hướng. –
OK Darin, Cảm ơn một lần nữa – mymotherland