1. Trả lời cho câu hỏi chính
Kịch bản $(window).height()
hoạt động tốt (hiển thị chiều cao của khung nhìn chứ không phải tài liệu có chiều cao cuộn), NHƯNG nó cần bạn đặt chính xác thẻ doctype trong tài liệu của bạn, ví dụ như các loại tài liệu này:
Đối với HTML 5:
<!DOCTYPE html>
Đối với HTML4 chuyển tiếp:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Có lẽ loại tài liệu mặc định được giả định bởi một số trình duyệt là như vậy, $(window).height()
lấy chiều cao của tài liệu chứ không phải chiều cao của trình duyệt. Với đặc tả doctype, nó đã được giải quyết thỏa đáng và tôi khá chắc chắn rằng bạn sẽ tránh được "thay đổi cuộn tràn sang ẩn rồi quay lại", đó là, tôi xin lỗi, một mẹo nhỏ bẩn thỉu, đặc biệt nếu bạn không ' Tài liệu về mã cho việc sử dụng lập trình viên trong tương lai.
2. Một mẹo THÊM, lưu ý sang một bên:
Hơn nữa, nếu bạn đang thực hiện một tập lệnh, bạn có thể phát minh ra các bài kiểm tra để giúp các lập trình viên sử dụng các thư viện của bạn, hãy để tôi phát minh ra một vài:
$ (tài liệu). yet (function () {
if(typeof $=='undefined') {
alert("PROGRAMMER'S Error: you haven't called JQuery library");
} else if (typeof $.ui=='undefined') {
alert("PROGRAMMER'S Error: you haven't installed the UI Jquery library");
}
if(document.doctype==null || screen.height < parseInt($(window).height()) ) {
alert("ERROR, check your doctype, the calculated heights are not what you might expect");
}
});
EDIT: về phần 2, "Một mẹo BỔ SUNG, hãy bỏ qua một bên": @Machiel, trong nhận xét của ngày hôm qua (2014-09-04), đã đúng rồi: việc kiểm tra $ không thể có trong sự kiện sẵn sàng của Jquery, bởi vì như chúng tôi đã chỉ ra, giả sử $ đã được định nghĩa. CẢM ƠN ĐÃ ĐIỂM R OUT RÀNG, và làm hài lòng những độc giả còn lại sửa lỗi này, nếu bạn đã sử dụng nó trong các tập lệnh của mình. Đề xuất của tôi là: trong các thư viện của bạn, hãy đặt hàm "install_script ()" để khởi tạo thư viện (đặt bất kỳ tham chiếu nào đến $ bên trong hàm init đó, bao gồm khai báo ready ()) và AT BEGINNING của hàm "install_script ()" như vậy , kiểm tra xem $ có được xác định không, nhưng làm cho mọi thứ độc lập với JQuery, để thư viện của bạn có thể "tự chẩn đoán" khi JQuery chưa được xác định. Tôi thích phương thức này hơn là bắt buộc tự động tạo JQuery mang nó từ CDN. Đó là những ghi chú nhỏ để dành cho các lập trình viên khác. Tôi nghĩ rằng những người làm thư viện phải giàu có hơn trong phản hồi về những sai lầm của lập trình viên tiềm năng. Ví dụ: Google Apis cần một hướng dẫn dành riêng để hiểu các thông báo lỗi. Điều đó thật vô lý, cần tài liệu bên ngoài cho một số lỗi nhỏ không cần bạn đi và tìm kiếm một hướng dẫn hoặc thông số kỹ thuật. Thư viện phải được TỰ TIN. Tôi viết mã thậm chí quan tâm đến những sai lầm mà tôi có thể phạm phải kể cả sáu tháng kể từ bây giờ và nó vẫn cố gắng trở thành một mã sạch và không lặp lại, đã được viết để ngăn chặn các lỗi của nhà phát triển trong tương lai. Tôi nghĩ rằng những người làm thư viện phải giàu có hơn trong phản hồi về những sai lầm của lập trình viên tiềm năng. Ví dụ: Google Apis cần một hướng dẫn dành riêng để hiểu các thông báo lỗi. Điều đó thật vô lý, cần tài liệu bên ngoài cho một số lỗi nhỏ không cần bạn đi và tìm kiếm một hướng dẫn hoặc thông số kỹ thuật. Thư viện phải được TỰ TIN. Tôi viết mã thậm chí quan tâm đến những sai lầm mà tôi có thể phạm phải kể cả sáu tháng kể từ bây giờ và nó vẫn cố gắng trở thành một mã sạch và không lặp lại, đã được viết để ngăn chặn các lỗi của nhà phát triển trong tương lai. Tôi nghĩ rằng những người làm thư viện phải giàu có hơn trong phản hồi về những sai lầm của lập trình viên tiềm năng. Ví dụ: Google Apis cần một hướng dẫn dành riêng để hiểu các thông báo lỗi. Điều đó thật vô lý, cần tài liệu bên ngoài cho một số lỗi nhỏ không cần bạn đi và tìm kiếm một hướng dẫn hoặc thông số kỹ thuật. Thư viện phải được TỰ TIN. Tôi viết mã thậm chí quan tâm đến những sai lầm mà tôi có thể phạm phải kể cả sáu tháng kể từ bây giờ và nó vẫn cố gắng trở thành một mã sạch và không lặp lại, đã được viết để ngăn chặn các lỗi của nhà phát triển trong tương lai. Bạn cần phải đi và tìm kiếm một hướng dẫn hoặc một đặc điểm kỹ thuật. Thư viện phải được TỰ TIN. Tôi viết mã thậm chí quan tâm đến những sai lầm mà tôi có thể phạm phải kể cả sáu tháng kể từ bây giờ và nó vẫn cố gắng trở thành một mã sạch và không lặp lại, đã được viết để ngăn chặn các lỗi của nhà phát triển trong tương lai. Bạn cần phải đi và tìm kiếm một hướng dẫn hoặc một đặc điểm kỹ thuật. Thư viện phải được TỰ TIN. Tôi viết mã thậm chí quan tâm đến những sai lầm mà tôi có thể phạm phải kể cả sáu tháng kể từ bây giờ và nó vẫn cố gắng trở thành một mã sạch và không lặp lại, đã được viết để ngăn chặn các lỗi của nhà phát triển trong tương lai.