2010-09-24 10 views
18

Hasta donde yo sé, pageXOffset/pageYOffset propiedades ya estaban disponibles desde la era Netscape 4.
Y parece scrollX/scrollY se introdujeron alrededor de Netscape 6.¿Por qué se introdujeron window.scrollY y window.scrollX?

pregunta Alternativa:

Q2. ¿Hay un navegador que implemente scrollX/scrollY pero no admita pageXOffset/pageYOffset?

Tengo que añadir una tercera pregunta porque nadie fue capaz de responder a las anteriores:

Q3. scrollX/scrollY se agregó al último borrador del CCSOM del editor y el borrador en uso solo tiene pageXOffset/pageYOffset, ¿por qué mantienen ambos atributos?

+0

MDN afirma lo siguiente: La propiedad 'pageXOffset' es un alias de la propiedad scrollx:' window.pageXOffset == window.scrollX; // siempre verdadero'. Esto no responde por qué, pero al menos sugiere que la respuesta a Q2 es no. – Manngo

Respuesta

2

Everything about it. Como se puede ver pageXOffset no es compatible con Internet Explorer 8 y por debajo. En IE8 (y versiones inferiores) debe usar scrollLeft/scrollTop de document.body o document.documentElement según lo que funcione (tal como se implementa en jQuery).

Puede verificarlo aquí: http://jsfiddle.net/8RFAn/1/

Y yo no sé por qué window.scrollX/Y se introdujeron, para mí estas propiedades se parece pageX/YOffset en términos de efecto y los navegadores en los que se implementan.

+2

thx por el esfuerzo pero no responde ninguna de mis preguntas ^^ – Knu

+0

páginaXOffset y pageYOffset son ambos IE9 + –

+0

@JohnHarding Sí, pero en el momento de escribir esa respuesta IE9 no existía todavía, al menos no en un establo versión. – pepkin88

-1

Como dijo pepkin88, pageXOffset (y todos los valores de pageXY) no son compatibles con las versiones anteriores de Internet Explorer. La mayoría de las propiedades utilizadas para ubicar objetos y calcular posiciones de mouse no son parte de los estándares W3C. Por lo que recuerdo haber leído, la mayoría de las propiedades son invención de Microsoft. Por lo tanto, cuando habla de scrollX y scrollY, está hablando de original pageXYOffset values. Cuando aparecieron los navegadores estándar compatibles que soportaban las propiedades pageXY (que no formaban parte del modelo de Microsoft), decidieron que sería demasiado confuso quedarse con 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 trato de decidir entre screenX, pageX o clientX. Creo que podrían haber encontrado 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 tan importantes en este ámbito de JavaScript. Estoy muy contento de que Microsoft los haya inventado, porque resultan ser muy útiles.

+2

http://dev.w3.org/csswg/cssom-view/#dom-window-pagexoffset – Knu

+0

Hablo de la mayoría de las propiedades de MSDN. – Azmisov

-1

Trataré de responder utilizando mi sentido común, nada oficial, lo siento mucho si eso no es lo que quiso decir en su pregunta.

window.scrollY y window.scrollX se utilizan 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 encima/al lado, para usar los valores de scrollX y scrollY pueden calcular el correcto posición.

Así que, probablemente, cuando la demanda planteada por los scripts dinámicos como herramientas personalizadas, las personas responsables del "marco" JavaScript responde a la llamada y se introdujo esas propiedades.

Como dije, no respuesta oficial, su googlear será tan buena como la mía a encontrar muchas respuestas. :)

7

¿Existe un navegador que implementa scrolly/X, pero no es compatible con pageY/XOffset

supongo que lo que quiere saber es si se puede confiar plenamente pageY/XOffset y dejar fuera de scrollY/X el juego. La respuesta es sí. pageY/XOffset está trabajando en Firefox, Chrome, Opera y IE 9!

no puedo probar scrollX/Y en IE9 en la actualidad, pero no aparece en MSDN properties así que hay una buena probabilidad de que responda a su pregunta. Por lo tanto, puede haber navegadores implementando pageY/XOffset pero no scrollY/X.

¿Por qué se presentaron window.scrollY y window.scrollX?

Como scrollY sólo es una alias, estoy seguro de que es sólo para una mejor legibilidad.

+2

No, según el enlace que ya ha proporcionado, pageY/XOffset es un alias para scrollx/Y https://developer.mozilla.org/en/DOM/window.scrollY – Michael

+1

'Para la compatibilidad entre navegadores, en lugar utilizar window.pageYOffset de window.scrollY' –

Cuestiones relacionadas