2010-04-26 30 views
57

Tôi đang hiển thị giá trị của document.body.scrollTop trong thanh trạng thái trong khi di chuyển chuột. Giá trị luôn bằng 0 trong IE. Tại sao luôn là 0? Có cách nào khác để nhận được thanh cuộn đã di chuyển không?document.body.scrollTop luôn luôn là 0 trong IE ngay cả khi di chuyển

+0

DOCTYPE gì bạn đang sử dụng? –

+3

Tôi upvoted câu trả lời được lựa chọn vì không ai khác dường như đã làm điều đó (trừ khi có một downvote để truy cập nó). Sẽ rất tuyệt nếu bạn trả lời câu hỏi của Nick. –

Trả lời

107

Bạn có thể muốn thử điều này cho một loại tài liệu cũ trong IE:

var top = (document.documentElement && document.documentElement.scrollTop) || 
       document.body.scrollTop; 
+0

Sẽ không phải là bom nếu 'document.documentElement' là không xác định? Tôi nghĩ rằng bạn có nghĩa là 'document.documentElement' thay vì' document.documentElement.scrollTop' trong phần đầu tiên của biểu thức thứ ba. :) –

+0

@Vivin - Không được xác định, thuộc tính cuộn không được đặt, dẫn đến 0/sai. –

+2

Điều này có thể được viết tắt là 'var top = document.documentElement.scrollTop || document.body.scrollTop; ' –

10

Tùy thuộc vào DOCTYPE, bạn sẽ phải sử dụng document.body.scrollTop hoặc document.documentElement.scrollTop. Bạn đã thử lần thứ hai chưa?

Bạn có thể làm một cái gì đó như thế này:

var scrollTop = document.documentElement ? document.documentElement.scrollTop : 
              document.body.scrollTop; 

Tôi chạy vào những liên kết này trong khi nghiên cứu vấn đề của bạn:

Điều này có thể giúp bạn nhiều hơn một chút.

15

chức năng này cung cấp một thực hiện qua trình duyệt đọc cuộn offset:

function posTop() { 
      return typeof window.pageYOffset != 'undefined' ? window.pageYOffset: document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0; 
     } 
+0

Cảm ơn, đây là câu trả lời duy nhất hoạt động trong cả hai phiên bản cũ hơn của IE là phiên bản Chrome mới nhất. – Kamelkent

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