2010-07-09 34 views
5

Khi cố gắng tìm ra vị trí cuộn cho một UIWebView, tôi sẽ gắn một trình lắng nghe vào HTML sẽ gọi lại cho ứng dụng chính. Tôi đính kèm trình nghe javascript như:sự kiện trên máy bay không được kích hoạt trên iPad sau khi chạm một lần?

window.onscroll = function reportScroll() { 
    var sY = window.pageYOffset; 
    alert('Scroll pos: '+sY); // Would evetually trigger a URL or something 
} 

Sự kiện này dường như chỉ được kích hoạt ở cuối cuộn phim trên OS 3.2 (iPad), sau khi giảm tốc. Tuy nhiên điều này: http://developer.apple.com/safari/library/documentation/appleapplications/reference/safariwebcontent/handlingevents/handlingevents.html#//apple_ref/doc/uid/TP40006511-SW7 dường như chỉ ra rằng nó sẽ được kích hoạt ở cuối của một chảo ngón tay duy nhất là tốt. Tôi thực sự cần biết khi nào cái chảo đó cũng hoàn thành. Bất kỳ giúp đỡ nhiều đánh giá cao, cảm ơn.

+0

đã giải quyết được sự cố? – galambalazs

+0

Không, xin lỗi nếu bình luận của tôi dưới đây không rõ ràng - nó không có hiệu quả về cơ bản. –

Trả lời

3

Theo QuirksMode Safari iPhone không kích hoạt sự kiện onscroll trên window, mà là trên document (và bất kỳ yếu tố nào khác). Tôi sẽ đặt cược Safari iPad làm điều tương tự.

+0

Tôi đã thử gắn hàm này vào document.onscroll và có vẻ như có kết quả tương tự: kích hoạt sự kiện ở cuối giảm tốc độ cuộn nhanh, nhưng không có sự kiện nào sau khi quét ngón tay. Nhờ đề nghị mặc dù. –

1

Tôi cũng gặp phải sự cố tương tự trên iPhone: thao tác cuộn nhanh sẽ tạo ra sự kiện trên máy bay, nhưng không dùng ngón tay (Tôi đã sử dụng tính năng này trong menu thực hiện cố định của mình, menu bị ẩn sau sự kiện ontouchstart và được khôi phục sau khi onscroll).

Tôi đã giải quyết được sự cố bằng cách sử dụng hai sự kiện song song: đăng ký và ontouchend. Cả hai đều đề cập đến cùng một trình xử lý sự kiện (phục hồi menu). Khi các sự kiện bị chặn trong khi cuộn, sự kiện ontouchend sẽ không bị sa thải nếu cửa sổ tiếp tục cuộn cuộn. Bây giờ xử lý sự kiện hoạt động cho cả cuộn phim và di chuyển.

Tôi chưa thử nghiệm tính năng này trong iPad, tôi sẽ muốn biết liệu bản sửa lỗi này có giúp ích cho điều đó không.

0

Trong iOS Safari, sự kiện đăng ký sẽ chỉ được kích hoạt một lần ở cuối cuộn (sau khi giảm tốc). Nếu bạn chỉ đơn giản là lấy ngón tay của bạn ra khỏi màn hình, hãy nghĩ về nó như là sự giảm tốc tức thời. Vì vậy, nếu bạn đang thực hiện một 'flick scroll', sự kiện onscroll vẫn chỉ được kích hoạt một lần, vào cuối quá trình giảm tốc.

Có vẻ như bạn cũng nên theo dõi sự kiện touchend:

$(window).on('touchend', function() { 
    // Do something 
}); 

Lưu ý: Sự kiện này touchend sẽ bị sa thải đối với từng ngón tay được nâng lên khỏi màn hình.

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