Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Есть ли браузер, который реализует 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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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