jquery $ (window) .width () und $ (window) .height () geben unterschiedliche Werte zurück, wenn die Größe des Ansichtsfensters nicht geändert wurde
Ich schreibe eine Site mit jquery, die wiederholt @ aufruf$(window).width()
und$(window).height()
, um Elemente basierend auf der Größe des Ansichtsfensters zu positionieren und deren Größe zu bestimmen.
Bei der Fehlerbehebung habe ich festgestellt, dass bei wiederholten Aufrufen der obigen jquery-Funktionen geringfügig unterschiedliche Größenberichte für Ansichtsfenster angezeigt werden, wenn die Größe des Ansichtsfensters nicht geändert wird.
Frage mich, ob es einen speziellen Fall gibt, von dem jemand weiß, wann dies geschieht, oder ob dies einfach so ist. Die angegebenen Größenunterschiede betragen anscheinend 20px oder weniger. Dies geschieht in Safari 4.0.4, Firefox 3.6.2 und Chrome 5.0.342.7 Beta unter Mac OS X 10.6.2. Ich habe noch keine anderen Browser getestet, da es nicht spezifisch für den Browser zu sein scheint. Ich konnte auch nicht herausfinden, wovon der Unterschied abhängt. Wenn es nicht die Größe des Ansichtsfensters ist, könnte es einen weiteren Faktor geben, der die Ergebnisse unterschiedlich macht?
eder Einblick wäre willkomme
aktualisieren
Es sind nicht die Werte von$(window).width()
und$(window).height()
das ändert sich. Es sind die Werte der Variablen, die ich verwende, um die Werte der oben genannten zu speichern.
Es sind keine Bildlaufleisten, die sich auf die Werte auswirken. Wenn sich die Variablenwerte ändern, werden keine Bildlaufleisten angezeigt. Hier ist mein Code zum Speichern der Werte in meinen Variablen (was ich gerade mache, damit sie kürzer sind).
(all dies ist innerhalb von$(document).ready()
)
// deklariert die Variablen zunächst so, dass sie für andere Funktionen in @ sichtbar sin.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()
Ich habe eine Alert-Anweisung eingefügt, um die obigen Variablen mit den Werten zu vergleichen, die sie enthalten sollen. Das$(item).param()
-Werte bleiben konsistent, aber meine Variablen ändern sich aus Gründen, die ich nicht herausfinden kann.
Ich habe nach Stellen gesucht, an denen mein Code möglicherweise den Wert der fraglichen Variablen ändert, anstatt nur die eingestellten Werte abzurufen und keine zu finden. Ich kann den ganzen Shebang irgendwo posten, wenn das eine Möglichkeit ist.