Почему были введены window.scrollY и window.scrollX? - PullRequest
19 голосов
/ 25 сентября 2010

Насколько я знаю, pageXOffset/pageYOffset свойства были доступны со времен Netscape 4.
И, кажется, scrollX/scrollY были введены около Netscape 6.

Альтернативный вопрос:

Q2. Есть ли браузер, который реализует scrollX / scrollY, но не поддерживает pageXOffset / pageYOffset?

Я добавлю третий вопрос, потому что никто не смог ответить на предыдущие:

Q3. scrollX / scrollY был добавлен в черновик последнего редакции CCSOM, а рабочий черновик получил только pageXOffset / pageYOffset, почему они сохраняют оба атрибута?

Ответы [ 4 ]

7 голосов
/ 05 ноября 2010

Есть ли браузер, который реализует scrollY / X, но не поддерживает pageY / XOffset

Полагаю, вы хотите знать, можете ли вы полностью доверять pageY/XOffset и оставить scrollY/X вне игры. Ответ - да. pageY/XOffset работает в Firefox, Chrome, Opera и IE 9!

В настоящее время я не могу проверить scrollX/Y в IE9, но его нет в списке Свойства MSDN , поэтому есть большая вероятность, что он ответит на ваш вопрос. Поэтому могут быть браузеры, реализующие pageY/XOffset, но не scrollY/X.

Почему были введены window.scrollY и window.scrollX?

Поскольку scrollY является только псевдонимом , я уверен, что это только для лучшей читаемости.

2 голосов
/ 26 сентября 2010

Все об этом. Как видите, pageXOffset не поддерживается Internet Explorer 8 и ниже. В IE8 (и ниже) вы должны использовать scrollLeft / scrollTop из document.body или document.documentElement в зависимости от того, что работает (так же, как это реализовано в jQuery).

Вы можете проверить это здесь: http://jsfiddle.net/8RFAn/1/

И я не знаю, почему были введены window.scrollX/Y, для меня эти свойства выглядят как pageX/YOffset с точки зрения эффекта и браузеров, в которых они реализованы.

0 голосов
/ 05 ноября 2010

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

window.scrollY и window.scrollX используются для определения объема пользовательского веб-сайта.прокрутка по вертикали или по горизонтали.

Это полезно, например, в сценариях, которые могут определять только «абсолютную» позицию чего-либо в документе и должны размещать что-то еще сверху или снизу от него, поэтому используйте scrollX иЗначения scrollY позволяют рассчитать правильную позицию.

Так что, вероятно, когда спрос на динамические сценарии, такие как настраиваемая подсказка, повышается, люди, отвечающие за "каркас" JavaScript, ответили на вызов и представили эти свойства.

Как я уже сказал, не официальный ответ, ваш Google будет так же хорош, как мой, чтобы найти такой ответ.:)

0 голосов
/ 05 ноября 2010

Как сказал pepkin88, pageXOffset (и все значения pageXY) не поддерживаются в более ранних версиях Internet Explorer. Большинство свойств, используемых для определения местоположения объектов и расчета позиций мыши, не являются частью стандартов W3C. Из того, что я помню, большинство свойств - это изобретение Microsoft. Поэтому, когда вы говорите о scrollX и scrollY, вы говорите о значениях original pageXYOffset. Когда появились стандартные совместимые браузеры, которые поддерживали свойства pageXY (не являются частью модели Microsoft), они решили, что будет слишком запутанно придерживаться значений scrollXY. Таким образом, они переключились на гораздо более логичную (по их мнению) версию: pageOffset.

По моему мнению, значения scrollXY более интуитивно понятны в использовании. Мне обычно приходится останавливаться и думать, каждый раз, когда я пытаюсь выбрать между screenX, pageX или clientX. Я думаю, что они могли бы придумать более интуитивные имена для каждого из свойств. В любом случае, ни один из них на самом деле не является стандартом W3C, так что, я думаю, соглашения не так уж и важны в этой области JavaScript. Я очень рад, что Microsoft их изобрела, потому что они оказываются очень полезными.

...