Có thể ngăn chặn hành vi cuộn tài liệu mặc định khi sự kiện cửa sổ bật lên xảy ra không?
Trang web của chúng tôi sử dụng tính năng cuộn động jQuery và History.js, và các thay đổi trạng thái sẽ cuộn người dùng đến các khu vực khác nhau của trang dù qua pushstate hay popstate. Vấn đề là trình duyệt tự động khôi phục vị trí cuộn của trạng thái trước đó khi một sự kiện cửa sổ bật lên xảy ra.
Tôi đã thử sử dụng phần tử vùng chứa được đặt thành 100% chiều rộng và chiều cao của tài liệu và cuộn nội dung bên trong vùng chứa đó. Vấn đề mà tôi đã tìm thấy là nó dường như không được mượt mà như cuộn tài liệu; đặc biệt nếu sử dụng nhiều css3 như box-shadow và gradient.
Tôi cũng đã thử lưu trữ vị trí cuộn của tài liệu trong khi người dùng bắt đầu cuộn và khôi phục nó sau khi trình duyệt cuộn trang (trên popstate). Điều này hoạt động tốt trong Firefox 12 nhưng trong Chrome 19 có hiện tượng nhấp nháy do trang đang được cuộn và khôi phục. Tôi giả sử điều này là do độ trễ giữa cuộn và sự kiện cuộn được kích hoạt (nơi vị trí cuộn được khôi phục).
Firefox cuộn trang (và kích hoạt sự kiện cuộn) trước khi popstate kích hoạt và Chrome kích hoạt popstate trước rồi cuộn tài liệu.
Tất cả các trang web tôi đã thấy sử dụng API lịch sử hoặc sử dụng giải pháp tương tự như những trang ở trên hoặc chỉ bỏ qua sự thay đổi vị trí cuộn khi người dùng quay lại / chuyển tiếp (ví dụ: GitHub).
Có thể ngăn tài liệu được cuộn ở tất cả các sự kiện cửa sổ bật lên không?
document.body.clientHeight
nhưng tôi đã không thấy nó hoạt động trong tất cả các trình duyệt.