2011-08-09 26 views
6

Được biết rằng sự kiện scroll có thể được kích hoạt bằng cách sử dụng con lăn chuột, nhấp vào mũi tên thanh cuộn hoặc động với chức năng window.scrollTo(left, top).Xác định nguyên nhân khiến sự kiện cuộn phát ra

Có thể xác định nguyên nhân gây ra sự kiện scroll để kích hoạt không? Cho dù đó là sự can thiệp của người dùng hay mã JS?

Trả lời

5

Tôi không nghĩ rằng bạn có thể xác định nguyên nhân gây ra cuộn. Sự kiện cuộn chỉ cho biết cửa sổ đang cuộn, không phải lý do tại sao đó là cuộn.

Nhưng có thể bạn tạm dừng trình xử lý sự kiện cuộn hoặc đặt cờ trước khi gọi window.scrollTo() từ mã của bạn. Ở đây trong Safari, nếu bạn sử dụng scrollTo(), sự kiện cuộn chỉ bắn một lần bất kể có bao nhiêu bạn di chuyển, vì vậy bạn hình dung có thể làm một cái gì đó như thế này:

// somewhere in your code... 
isCodedScrollEvent = true; 
window.scrollTo(0, 200); 

// elsewhere in your code... 
function scrollListener(event) { 
    if(isCodedScrollEvent) { 
     // event was caused by code, so handle it differently 
     // and then flip the flag back to false, so the next 
     // will be handled normally again 
     isCodedScrollEvent = false; 
    } else { 
     // event was caused by user 
    } 
} 

Nó không phải là đẹp, nhưng nó nên làm việc

+0

đã sử dụng một cái gì đó như thế này gần đây, tôi có thể xác minh, nó thực sự hoạt động khá tốt. Tôi đã cố gắng để phát hiện khi một sự kiện di chuyển được từ một người dùng ở giữa tweening một cuộn. Tôi đã sử dụng chức năng dòng thời gian 'onUpdate()' của greensock và thấy rằng nếu tôi đặt một lá cờ trong hàm đó, nó sẽ tốt với trình nghe cuộn. Sau đó, bạn chỉ cần đặt lại cờ. Nếu người dùng bị gián đoạn cuộn, cờ sẽ không được đặt và bạn có thể giết hoạt ảnh của mình ... – newshorts

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