javascript dom examples
¿Por qué se introdujeron window.scrollY y window.scrollX? (4)
¿Hay un navegador que implementa scrollY / X pero no es compatible con pageY / XOffset?
Supongo que lo que quieres saber es si puedes confiar plenamente en pageY/XOffset
y dejar fuera de juego scrollY/X
La respuesta es sí. pageY/XOffset
está funcionando en Firefox, Chrome, Opera e IE 9!
Actualmente no puedo probar scrollX/Y
en IE9, pero no aparece en las propiedades de MSDN, por lo que es muy probable que responda a su pregunta. Por lo tanto, es posible que haya navegadores que implementen pageY/XOffset
pero no scrollY/X
¿Por qué se introdujeron window.scrollY y window.scrollX?
Como scrollY
es solo un alias , estoy seguro de que es solo para una mejor legibilidad.
Por lo que sé, las propiedades pageXOffset/pageYOffset
ya estaban disponibles desde la era Netscape 4.
Y parece que scrollX/scrollY
se introdujeron alrededor de Netscape 6.
Pregunta alternativa:
Q2. ¿Hay un navegador que implemente scrollX / scrollY pero no es compatible con pageXOffset / pageYOffset?
Agregaré una tercera pregunta porque nadie pudo responder a las anteriores:
Q3. scrollX / scrollY se agregó al último borrador del editor de CCSOM y el borrador de trabajo solo obtuvo pageXOffset / pageYOffset, ¿por qué mantienen ambos atributos?
Como dijo pepkin88, pageXOffset (y todos los valores de pageXY) no son compatibles con versiones anteriores de Internet Explorer. La mayoría de las propiedades utilizadas para ubicar objetos y calcular las posiciones del mouse no son parte de los estándares W3C. De lo que recuerdo haber leído, la mayoría de las propiedades son inventos de Microsoft. Entonces, cuando habla de scrollX y scrollY, está hablando de los valores de pageXYOffset originales . Cuando aparecieron navegadores compatibles que admitían las propiedades de pageXY (que no formaban parte del modelo de Microsoft), decidieron que sería demasiado confuso mantener los valores de scrollXY. Entonces, cambiaron a una versión mucho más lógica (en su opinión): pageOffset.
En mi opinión, encuentro que los valores de scrollXY son más intuitivos de usar. Normalmente, tendré que hacer una pausa y pensar, cada vez que intento decidir entre screenX, pageX o clientX. Creo que podrían haber creado nombres más intuitivos para cada una de las propiedades. De todos modos, ninguno de ellos es realmente estándar W3C, así que supongo que las convenciones no son realmente tan importantes en este ámbito de JavaScript. Estoy muy contento de que Microsoft los inventó, porque resultan muy útiles.
Intentaré responder usando mi sentido común, nada oficial, lo siento si eso no es lo que quería decir en su pregunta.
window.scrollY y window.scrollX se usan para decidir cuánto ha desplazado el usuario del sitio web vertical u horizontalmente.
Esto es útil, por ejemplo, en scripts que solo pueden detectar la posición "absoluta" de algo en el documento y necesitan colocar algo más en la parte superior / al lado del mismo, por lo que al usar los valores scrollX y scrollY pueden calcular la posición correcta.
Por lo tanto, probablemente cuando se planteó la demanda de scripts dinámicos como información sobre herramientas personalizada, los responsables del "marco" de JavaScript respondieron a la llamada e introdujeron esas propiedades.
Como dije, no es una respuesta oficial, tu googlear será tan bueno como el mío para encontrar esa respuesta. :)
Todo sobre ello. Como puede ver, la pageXOffset
no es compatible con Internet Explorer 8 y pageXOffset
. En IE8 (y en una scrollLeft
inferior), debe usar scrollLeft
/ scrollTop
of document.body
o document.documentElement
según lo que funcione (tal como se implementa en jQuery).
Puede comprobarlo aquí: http://jsfiddle.net/8RFAn/1/
Y no sé por qué se introdujo window.scrollX/Y
, para mí estas propiedades se parecen a pageX/YOffset
en términos de efectos y navegadores en los que se implementan.