1. Ответ на главный вопрос
Скрипт $(window).height()
работает хорошо (показывает высоту области просмотра, а не документ с высотой прокрутки), НО ему нужно, чтобы вы правильно указали тег doctype в своем документе, например, следующие типы документов:
Для HTML 5:
<!DOCTYPE html>
Для переходного HTML4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Вероятно, тип документа по умолчанию, предполагаемый некоторыми браузерами, таков, что $(window).height()
принимает высоту документа, а не высоту браузера. Со спецификацией doctype она удовлетворительно решена, и я уверен, что вы, peps, избежите «изменения переполнения прокрутки на скрытый и затем обратно», что, извините, немного подвох, особенно если вы не Запишите это в коде для использования в будущем программистом.
2. ДОПОЛНИТЕЛЬНЫЙ совет, обратите внимание: кроме
того, если вы делаете скрипт, вы можете изобрести тесты, чтобы помочь программистам в использовании ваших библиотек, позвольте мне изобрести пару:
$ (документ) .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");
}
});
РЕДАКТИРОВАТЬ: о части 2, «ДОПОЛНИТЕЛЬНАЯ подсказка, обратите внимание»: @Machiel во вчерашнем комментарии (2014-09-04) был совершенно прав: проверка $ не может быть внутри события ready Jquery, потому что мы, как он указал, предполагаем, что $ уже определено. СПАСИБО, ЧТОБЫ УКАЗАТЬ ЭТО, и, пожалуйста, остальным читателям исправьте это, если вы использовали это в своих сценариях. Мое предложение: в ваших библиотеках поместите функцию "install_script ()", которая инициализирует библиотеку (поместите любую ссылку на $ внутри такой функции init, включая объявление ready ()) и в НАЧАЛЕ такой функции "install_script ()" проверьте, определен ли $, но сделайте все независимым от JQuery, чтобы ваша библиотека могла «диагностировать себя», когда JQuery еще не определен. Я предпочитаю этот метод, а не принудительное автоматическое создание JQuery с использованием CDN. Это крошечные заметки для помощи другим программистам. Я думаю, что люди, которые делают библиотеки, должны быть более внимательны к ошибкам потенциальных программистов. Например, Google Apis необходимо дополнительное руководство для понимания сообщений об ошибках. Это абсурдно, требовать внешнюю документацию для некоторых крошечных ошибок, которые не требуют, чтобы вы пошли искать руководство или спецификацию. Библиотека должна быть САМОДОКУМЕНТИРОВАНА. Я пишу код, даже заботясь об ошибках, которые могу совершить даже через шесть месяцев, и он все еще пытается быть чистым и неповторяющимся кодом, уже написанным для предотвращения ошибок будущего разработчика. Я думаю, что люди, которые делают библиотеки, должны быть более внимательны к ошибкам потенциальных программистов. Например, Google Apis необходимо дополнительное руководство для понимания сообщений об ошибках. Это абсурдно, требовать внешнюю документацию для некоторых крошечных ошибок, которые не требуют, чтобы вы пошли искать руководство или спецификацию. Библиотека должна быть САМОДОКУМЕНТИРОВАНА. Я пишу код, даже заботясь об ошибках, которые могу совершить даже через шесть месяцев, и он все еще пытается быть чистым и неповторяющимся кодом, уже написанным для предотвращения ошибок будущего разработчика. Я думаю, что люди, которые делают библиотеки, должны быть более внимательны к ошибкам потенциальных программистов. Например, Google Apis необходимо дополнительное руководство для понимания сообщений об ошибках. Это абсурдно, требовать внешнюю документацию для некоторых крошечных ошибок, которые не требуют, чтобы вы пошли искать руководство или спецификацию. Библиотека должна быть САМОДОКУМЕНТИРОВАНА. Я пишу код, даже заботясь об ошибках, которые могу совершить даже через шесть месяцев, и он все еще пытается быть чистым и неповторяющимся кодом, уже написанным для предотвращения ошибок будущего разработчика. Тебе не нужно идти искать руководство или спецификацию. Библиотека должна быть САМОДОКУМЕНТИРОВАНА. Я пишу код, даже заботясь об ошибках, которые могу совершить даже через шесть месяцев, и он все еще пытается быть чистым и неповторяющимся кодом, уже написанным для предотвращения ошибок будущего разработчика. Тебе не нужно идти искать руководство или спецификацию. Библиотека должна быть САМОДОКУМЕНТИРОВАНА. Я пишу код, даже заботясь об ошибках, которые могу совершить даже через шесть месяцев, и он все еще пытается быть чистым и неповторяющимся кодом, уже написанным для предотвращения ошибок будущего разработчика.