Daniel F Pupius mô tả các vấn đề như:Ember.js khôi phục di chuyển trên lịch sử, thiết lập lại di chuyển vào liên kết
Rất nhiều trang web có được điều này sai và nó thực sự gây phiền nhiễu. Khi người dùng điều hướng bằng nút tiến lên hoặc quay lại của trình duyệt, vị trí cuộn phải giống với lần cuối cùng trên trang. Điều này đôi khi hoạt động chính xác trên Facebook nhưng đôi khi không hoạt động. Google+ dường như luôn mất vị trí cuộn của bạn.
Vì vậy, đã có rất nhiều câu hỏi về việc đặt lại cuộn lên đầu trang khi duyệt đến một trang mới. Cookbook của Ember.js cũng là shows how to hook into Route.activate
:
export default Ember.Mixin.create({
activate: function() {
this._super();
window.scrollTo(0,0);
}
});
Tuy nhiên điều này chỉ giải quyết được một nửa vấn đề. Khi người dùng sử dụng các nút lùi/tiến, vị trí cuộn sẽ không được khôi phục nhưng chỉ cần đặt lại.
Có khá nhiều nỗ lực để giải quyết vấn đề này, nhiều khi chỉ lưu trữ vị trí cuộn trong ví dụ Ember.Controller
, ví dụ: article. Tuy nhiên đây chỉ là một giải pháp một phần. Nếu bộ điều khiển được sử dụng nhiều lần, chỉ một trạng thái cuộn đơn sẽ được giữ nguyên.
Làm cách nào để triển khai trình duyệt mặc định khôi phục trạng thái cuộn cũ được giữ nguyên? Do đó, không làm gì nếu Route.activate
được kích hoạt từ một thay đổi trạng thái lịch sử html5?
Tôi nghĩ rằng điều này sẽ không nhớ hai vị trí cuộn khác nhau nếu bộ điều khiển được truy cập hai lần? – bouke
Bản mixin này áp dụng cho tuyến đường chứ không phải bộ điều khiển. Nó nhớ vị trí cuộn khi bạn rời khỏi tuyến đường (xem phần 'hủy kích hoạt'), sau đó khôi phục nó khi bạn quay trở lại. – JeremyTM