Особенности ссылок «вверх страницы»

Когда размер страницы превосходит некоторый предел, разработчики часто ставят внизу текстовую или графическую ссылку «вверх страницы». Эта ссылка позволяет быстро перейти в начало страницы, что иногда бывает очень удобно.

Классически подобная ссылка верстается так:

<a name="top">…</a>

много-много текста

<a href="#top">вверх страницы</a>

Недостатком этого метода является то, что необходимо какой-то элемент вверху страницы поместить в якорь (<a name="top">), так как некоторые браузеры не понимают пустые якоря. Кроме того, при переходе к якорю в Internet Explorer исчезает название страницы в заголовке браузера, и не совсем логично работает кнопка Back.

Но от этих проблем можно избавиться, перехитрив браузер. Для этого достаточно просто указать пустую ссылку <a href="#">вверх страницы</a>, не задавая никаких якорей. Браузер без лишних раздумий прокрутит страницу вверх. Я специально посмотрел в спецификации, что она имеет сказать на этот счёт, но не нашел никаких указаний, как UA должен действовать в ситуации, когда имя якоря не указано. Хорошо, что в этом недокументированном поведении абсолютно все браузеры проявляют единодушие.

Наконец, хотелось бы указать ещё один способ установки ссылки «вверх страницы». Он основан на JavaScript и не вызывает никаких побочных эффектов:

много-много текста

<a href="javascript:scroll(0,0)">вверх страницы</a>

Здесь был использован метод window.scroll(x,y), который позволяет промотать страницу на указанное количество пискелов по горизонтали (x) и вертикали (y). Если мы обнулим эти два параметра, то будет восстановлен статус кво — страница проскролится в начало.

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

P. S. Как правильно подсказал Николай Меркин, наиболее совместимым решением будет такой вариант:

<a href="#" onClick="scroll(0,0); return false" title="наверх">вверх страницы</a>


Автор: Александр Шуркаев