$ jQuery (окно) .width () и $ (окно) .height () возвращают различные значения, когда область просмотра не была изменена

Я пишу сайт с помощью jQuery, который неоднократно звонит $(window).width() и $(window).height() расположить и измерить элементы на основе размера области просмотра.

В поиске и устранении неисправностей я обнаружил, что получаю немного отличающиеся отчеты о размере области просмотра в повторных вызовах к вышеупомянутым функциям jQuery, когда область просмотра не изменена.

Удивление, если существует какой-либо особый случай, любой знает о том, когда это происходит, или если это - просто способ, которым это. Различие в размерах, о которых сообщают, составляет 20 пкс или меньше, это появляется. Это происходит в Safari 4.0.4, Firefox 3.6.2 и Chrome 5.0.342.7 беты на 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() значения остаются последовательными, но мое изменение переменных по причинам я не могу выяснить.

Я искал места, где мой код мог бы изменять значение рассматриваемых переменных, в противоположность просто получению их установленных значений и не может найти ни один. Я могу отправить целую хижину где-нибудь, если это - возможность.

105
задан DisplayName 9 October 2013 в 12:55
поделиться

2 ответа

Думаю, вы видите скрытие и отображение полос прокрутки. Вот небольшая демонстрация изменения ширины .

Кстати: нужно ли постоянно опрашивать? Возможно, вы сможете оптимизировать свой код для запуска в событии изменения размера, например:

$(window).resize(function() {
  //update stuff
});
98
ответ дан 24 November 2019 в 04:02
поделиться

У меня была очень похожая проблема. Когда я обновлял свою страницу, у меня были несогласованные значения высоты (). (Проблема была не в моей переменной, а в фактическом значении высоты.)

Я заметил, что в заголовке моей страницы я сначала вызвал свои скрипты, а затем свой файл css. Я переключился так, чтобы сначала был связан файл css, а затем файлы сценария, и, похоже, это уже устранило проблему.

Надеюсь, что это поможет.

1
ответ дан 24 November 2019 в 04:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: