1. Respon terhadap pertanyaan utama
Script $(window).height()
berfungsi dengan baik (menunjukkan ketinggian viewport dan bukan dokumen dengan tinggi gulir), TETAPI perlu Anda menempatkan tag doctype dengan benar dalam dokumen Anda, misalnya doctypes ini:
Untuk HTML 5:
<!DOCTYPE html>
Untuk HTML4 transisi:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Mungkin doctype default yang diasumsikan oleh beberapa browser adalah seperti itu, yang $(window).height()
mengambil tinggi dokumen dan bukan tinggi browser. Dengan spesifikasi DOCTYPE, itu diselesaikan dengan memuaskan, dan saya cukup yakin kalian akan menghindari "mengubah scroll-overflow menjadi tersembunyi dan kemudian kembali", yang, maaf, trik yang sedikit kotor, khususnya jika Anda tidak t mendokumentasikannya pada kode untuk penggunaan programmer masa depan.
2. Kiat TAMBAHAN, singkirkan:
Selain itu, jika Anda membuat skrip, Anda dapat membuat tes untuk membantu programmer dalam menggunakan pustaka Anda, izinkan saya membuat pasangan:
$ (dokumen) .ready (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: tentang bagian 2, "Kiat TAMBAHAN, singkirkan catatan": @Machiel, dalam komentar kemarin (2014-09-04), BENAR-BENAR benar: cek $ tidak dapat berada dalam acara siap Jquery, karena kita, seperti yang dia tunjukkan, dengan asumsi $ sudah didefinisikan. TERIMA KASIH UNTUK MENITIKKAN BAHWA KELUAR, dan tolong pembaca lainnya memperbaikinya, jika Anda menggunakannya dalam skrip Anda. Saran saya adalah: di perpustakaan Anda letakkan fungsi "install_script ()" yang menginisialisasi perpustakaan (masukkan referensi ke $ di dalam fungsi init tersebut, termasuk deklarasi ready ()) dan DI AWAL fungsi "install_script ()" tersebut , periksa apakah $ didefinisikan, tetapi jadikan semuanya independen dari JQuery, sehingga pustaka Anda dapat "mendiagnosis dirinya sendiri" ketika JQuery belum didefinisikan. Saya lebih suka metode ini daripada memaksa penciptaan otomatis JQuery membawanya dari CDN. Itu adalah catatan kecil disamping untuk membantu programmer lain. Saya pikir orang yang membuat perpustakaan harus lebih kaya dalam umpan balik terhadap kesalahan programmer potensial. Misalnya, Google Apis memerlukan manual samping untuk memahami pesan kesalahan. Itu tidak masuk akal, membutuhkan dokumentasi eksternal untuk beberapa kesalahan kecil yang tidak mengharuskan Anda untuk pergi dan mencari manual atau spesifikasi. Perpustakaan harus DOKUMEN DIRI. Saya menulis kode bahkan menangani kesalahan yang mungkin saya lakukan bahkan enam bulan dari sekarang, dan itu masih mencoba untuk menjadi kode yang bersih dan tidak berulang, sudah ditulis untuk mencegah-masa depan-kesalahan pengembang. Saya pikir orang yang membuat perpustakaan harus lebih kaya dalam umpan balik terhadap kesalahan programmer potensial. Misalnya, Google Apis memerlukan manual samping untuk memahami pesan kesalahan. Itu tidak masuk akal, membutuhkan dokumentasi eksternal untuk beberapa kesalahan kecil yang tidak mengharuskan Anda untuk pergi dan mencari manual atau spesifikasi. Perpustakaan harus DOKUMEN DIRI. Saya menulis kode bahkan menangani kesalahan yang mungkin saya lakukan bahkan enam bulan dari sekarang, dan itu masih mencoba untuk menjadi kode yang bersih dan tidak berulang, sudah ditulis untuk mencegah-masa depan-kesalahan pengembang. Saya pikir orang yang membuat perpustakaan harus lebih kaya dalam umpan balik terhadap kesalahan programmer potensial. Misalnya, Google Apis memerlukan manual samping untuk memahami pesan kesalahan. Itu tidak masuk akal, membutuhkan dokumentasi eksternal untuk beberapa kesalahan kecil yang tidak mengharuskan Anda untuk pergi dan mencari manual atau spesifikasi. Perpustakaan harus DOKUMEN DIRI. Saya menulis kode bahkan menangani kesalahan yang mungkin saya lakukan bahkan enam bulan dari sekarang, dan itu masih mencoba untuk menjadi kode yang bersih dan tidak berulang, sudah ditulis untuk mencegah-masa depan-kesalahan pengembang. Anda tidak perlu pergi dan mencari manual atau spesifikasi. Perpustakaan harus DOKUMEN DIRI. Saya menulis kode bahkan menangani kesalahan yang mungkin saya lakukan bahkan enam bulan dari sekarang, dan itu masih mencoba untuk menjadi kode yang bersih dan tidak berulang, sudah ditulis untuk mencegah-masa depan-kesalahan pengembang. Anda tidak perlu pergi dan mencari manual atau spesifikasi. Perpustakaan harus DOKUMEN DIRI. Saya menulis kode bahkan menangani kesalahan yang mungkin saya lakukan bahkan enam bulan dari sekarang, dan itu masih mencoba untuk menjadi kode yang bersih dan tidak berulang, sudah ditulis untuk mencegah-masa depan-kesalahan pengembang.