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

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

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

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

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

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

4 ответа

Есть ли браузер, который реализует 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 это только псевдоним, я уверен, что это только для лучшей читаемости.

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам