2010-05-25 17 views
5

Tôi đang cố ngăn chặn hiệu ứng "nhấp nháy" đang xảy ra trên trang ASP.NET của tôi xảy ra khi người dùng điều hướng đến trang qua nút quay lại trình duyệt sau khi đã điều hướng khỏi nó. Lý do cho việc nhấp nháy là tôi đang sử dụng Bảng điều khiển cập nhật có một số nội dung trong đó trên trang tải ban đầu. Do đó, khi trang được tải qua nút quay lại, nội dung ban đầu được hiển thị rất ngắn trước khi được cập nhật với dữ liệu Nhận biết lịch sử chính xác.Làm thế nào tôi có thể phát hiện phía máy khách khi tải trang là kết quả của một điểm lịch sử AJAX?

Để khắc phục điều này, tôi dự định ẩn bảng cập nhật (hiển thị: không) trên tải trang inital và sau đó hiển thị miễn là chúng tôi không có bất kỳ lịch sử nào để xử lý. Vấn đề là tôi không thể tìm ra những gì cần kiểm tra để xác định xem có lịch sử nào không. Tôi có thể thấy rằng Sys.Application có một thành viên _history nhưng khi tôi kiểm tra nó trên trang init nó là null mỗi lần.

Có ai biết những gì tôi nên kiểm tra để xác định xem có lịch sử để xử lý cho trang tải phía máy khách không? Và tại điểm nào để làm điều đó?

Trả lời

1

Nút quay lại của trình duyệt và chức năng cung cấp hoàn toàn độc lập với nội dung trang web của bạn.

Một điều bạn có thể làm là đặt băm vị trí của mình khi bạn thực hiện cập nhật AJAX. Bạn có thể phát hiện điều này khi bạn tải một trang. Tôi đã không thử nó. Bạn có thể phân tích phần # của url trên Server Side và xem bạn đang ở đâu trong lịch sử AJAX.

location.hash = 'foo'; 
0

Cảm ơn phản hồi của bạn Daniel. Bây giờ tôi có một div xung quanh bảng cập nhật của tôi có thuộc tính hiển thị của nó được đặt thành không. Trong sự kiện init của Sys.Application, tôi đang kiểm tra giá trị window.location.hash để xác định xem tải trang có phải là kết quả của một nút bấm quay lại/chuyển tiếp của trình duyệt hay không. Nếu nó không phải là sau đó tôi đang thiết lập tài sản hiển thị để chặn, nếu không tôi để nó như là 'display: none' trong thời gian này.

Trên phía máy chủ trong Trình quản lý sự kiện Điều hướng sự kiện được gọi là kết quả của nút quay lại được nhấp Tôi đang đăng ký khối tập lệnh khách hàng để đặt thuộc tính hiển thị thành chặn.

Tôi đã thực hiện một chút thử nghiệm và có vẻ hoạt động tốt và tôi không còn bị nhấp nháy nữa. Tôi muốn sử dụng một trong các đối tượng khách hàng MS AJAX để kiểm tra lịch sử nhưng chúng tôi đang có.

+0

Đó là cách tốt nhất để thực hiện: đặt hiển thị: không có gì trên tải trang (onBody). Nó nên phục vụ cho nó. – waqasahmed

+3

bạn nên sử dụng các nhận xét để trả lời những người trả lời hoặc chỉnh sửa câu hỏi gốc của bạn với các chi tiết khác dựa trên câu hỏi hoặc phản hồi của người khác. Vui lòng không đăng thảo luận dưới dạng câu trả lời riêng lẻ, trừ khi đó là câu trả lời thực sự cho vấn đề của bạn (bạn đã tự giải quyết vấn đề đó). –

0

Đặt đầu vào bị ẩn vào trang có giá trị trống, sau đó khi tải trang đặt giá trị của nó. Bạn sẽ thấy rằng khi sử dụng nút quay lại, tập lệnh tải trang sẽ tìm thấy giá trị vẫn được đặt và bạn có thể trả lời tương ứng. Điều này tận dụng chức năng trình duyệt lưu giữ nội dung biểu mẫu giữa các lần tải trang.

Các vấn đề liên quan