2008-12-11 36 views
9

Tôi có một ứng dụng nặng javascript có các tiện ích như danh sách thả xuống và các tab tự động hoàn thành, v.v. Đôi khi khi trình đơn thả xuống xuất hiện và biến mất hoặc khi bạn chuyển đổi giữa các tab, nó sẽ thay đổi chiều cao của tài liệu. Điều này có thể gây phiền toái nếu thanh cuộn xuất hiện và biến mất nhanh chóng, vì nó dịch chuyển trang. Tôi muốn phát hiện khi một trang thay đổi chiều cao của nó, vì vậy tôi có thể sửa chiều cao đến mức tối đa cho đến nay, để nếu thanh cuộn xuất hiện, nó sẽ không biến mất chỉ một giây sau đó. Bất kỳ đề xuất?Làm thế nào để phát hiện khi chiều cao của trang thay đổi?

Cập nhật: onresize sẽ không hoạt động vì đó là thay đổi về kích thước cửa sổ xem/cửa sổ - Tôi muốn thay đổi độ dài của tài liệu. Tôi đã không biết về chức năng xem, có vẻ như nó sẽ làm việc ít nhất cho FF, nhưng IE không hỗ trợ nó.

+2

có thể trùng lặp của [Phát hiện tài liệu Chiều cao thay đổi ] (http://stackoverflow.com/questions/14866775/detect-document-height-change) – Aziz

Trả lời

-1

Một ý tưởng sẽ được sử dụng phương pháp đồng hồ() trên tài sản clientHeight:

document.body.watch("clientHeight", function(property, oldHeight, newHeight) { 
    // what you want to do when the height changes 
}); 

Chức năng bạn chỉ định sẽ được thực thi bất cứ khi nào thuộc tính được chỉ định thay đổi. Tại bất kỳ thời điểm nào, bạn có thể sử dụng phương thức unwatch() để làm cho nó dừng lại.

+5

Xem [cảnh báo màu đỏ lớn ở đây] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch)? ** "Nói chung, bạn nên tránh sử dụng watch() và unwatch() khi có thể. Hai phương pháp này chỉ được triển khai trong Gecko và chúng được sử dụng chủ yếu để gỡ lỗi. Ngoài ra, việc sử dụng điểm quan sát có tác động tiêu cực nghiêm trọng đến hiệu suất" ** – TMS

-1

Bạn sử dụng có thể thay đổi kích thước kiện để bẫy các thay đổi kích thước của cửa sổ sử dụng jquery như sau:

$(window).resize(function(){ 
    // your code to check sizes and take action 
    } 
); 

Hoặc bạn có thể theo dõi sự thay đổi trong tài liệu (không kiểm tra)

$(document).resize(function(){ 
    // your code to check sizes and take action 
    } 
); 
1

tôi belive câu hỏi này đã được trả lời trên stackoverflow ở đây: Detect Document Height Change

Về cơ bản bạn phải lưu trữ tài liệu hiện tại chiều cao ent và liên tục kiểm tra cho một sự thay đổi qua một timeoutcall

Yếu tố để xem đây là document.body.clientHeight (hoặc trong jquery $ (document) .height())

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