Я пишу сайт с использованием 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()
)
// первоначально объявить переменные, чтобы быть видимым otehr функции в пределах .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()
остаются неизменными, но мои переменные меняются по причинам, которые я не могу понять.
Я искал места, где мой код может изменять значение переменных, о которых идет речь, а не просто извлекать их установленные значения и не может найти их. Я могу опубликовать весь шебанг где-нибудь, если это возможно.
Кстати, вы были в конце концов ... в то время как устранение неполадок я заметил, что там были полосы прокрутки. они оказались настолько короткими, что их нельзя было увидеть, кроме как в режиме отладки, когда сценарий приостановился в середине исполнения. как только я удалил вышеуказанные переменные и функцию, некоторые элементы все еще прыгали с позиции - это было связано с порядком шагов скрипта - мне просто нужно было убедиться, что я сбросил div, удерживая мои вставленные изображения, в css left: 0 перед вставкой изображения , моральный для истории: просто потому, что полосы прокрутки не выглядят достаточно долго, чтобы их можно было увидеть, это не значит, что их там не было! –
Я также использовал бы этот вопрос: http://stackoverflow.com/questions/2854407/javascript-jquery-window-resize-how-to-fire-after-the-resize-is-completed, чтобы вы могли проверить, как изменить размер событие закончилось, прежде чем что-либо делать. Ваш скрипт будет запускать то, что когда-либо было в функции .resize(), каждый пиксель, размер которого вы изменяете, поэтому лучше подождать. – MarkP