Я пишу сайт с использованием jquery, который многократно вызывает $(window).width()
и $(window).height()
позиционирует и изменяет размер элементов в зависимости от размера области просмотра.
При устранении неполадок я обнаружил, что получаю несколько разные отчеты о размере окна просмотра при повторных вызовах вышеуказанных функций jquery, когда размер окна просмотра не изменяется.
Интересно, есть ли какой-то особый случай, о котором кто-нибудь знает, когда это происходит, или это просто так. Похоже, разница в размерах составляет 20 пикселей или меньше. Это происходит в Safari 4.0.4, Firefox 3.6.2 и Chrome 5.0.342.7 beta в Mac OS X 10.6.2. Я еще не тестировал другие браузеры, потому что это не похоже на конкретный браузер. Я также не смог понять, от чего зависит разница, если это не размер области просмотра, может ли быть другой фактор, который заставляет результаты отличаться?
Любое понимание будет оценено.
Обновить:
Меняются не ценности $(window).width()
и $(window).height()
. Это значения переменных, которые я использую для хранения вышеперечисленных значений.
На значения влияют не полосы прокрутки, они не появляются при изменении значений переменных. Вот мой код для хранения значений в моих переменных (что я делаю только для того, чтобы они были короче).
(все это внутри $(document).ready()
)
// изначально объявляем переменные видимыми для других функций внутри .ready()
var windowWidth = $(window).width(); //retrieve current window width
var windowHeight = $(window).height(); //retrieve current window height
var documentWidth = $(document).width(); //retrieve current document width
var documentHeight = $(document).height(); //retrieve current document height
var vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
var hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
function onm_window_parameters(){ //called on viewer reload, screen resize or scroll
windowWidth = $(window).width(); //retrieve current window width
windowHeight = $(window).height(); //retrieve current window height
documentWidth = $(document).width(); //retrieve current document width
documentHeight = $(document).height(); //retrieve current document height
vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
}; //end function onm_window_parameters()
Я вставил предупреждение, чтобы проверить указанные выше переменные на предмет значений, которые они должны хранить. Эти $(item).param()
значения остаются последовательными, но мои переменные изменяются по причинам , я не могу понять.
Я искал места, где мой код мог изменять значения рассматриваемых переменных, а не просто получать их установленные значения и не мог их найти. Я могу выложить где-нибудь всю эту шебангу, если это возможно.
Попробуйте использовать
$(window).load
мероприятиеили
$(document).ready
поскольку начальные значения могут быть непостоянными из-за изменений, которые происходят во время синтаксического анализа или во время загрузки DOM.
источник
Обратите внимание: если проблема вызвана появлением полос прокрутки, поместите
в вашем CSS может быть простым исправлением (если вам не нужно прокручивать страницу).
источник
У меня была очень похожая проблема. Когда я обновлял страницу, у меня были несогласованные значения высоты (). (Проблема была не в моей переменной, а в фактическом значении высоты.)
Я заметил, что в заголовке своей страницы я сначала вызвал свои скрипты, а затем свой файл css. Я переключился так, чтобы сначала был связан файл css, а затем файлы сценариев, и, похоже, это уже устранило проблему.
Надеюсь, это поможет.
источник