Задать вопрос

Как сделать, чтобы при переходе по ссылке открывалось определенное положение страницы?

Здравствуйте.
Помогите пожалуйста сделать так, чтоб при переходе по ссылке открывалось нужное положение страницы (желательно без якорей).
Заранее большое спасибо.
  • Вопрос задан
  • 11047 просмотров
Подписаться 3 Оценить 6 комментариев
Решение пользователя Dmitriy Mozgovoy К ответам на вопрос (4)
DIITHiTech
@DIITHiTech
Fullstack javascript developer
можно:
- использовать native механизмы якорей
- использовать якори для передачи координат или селектора на страницу с последующим разбором скриптом и прокруткой
- кукистные костыли

выберем второй:
Скрипт может парсить переменный x/y или scrollTo=selector и прокручивает страницу

также позволяет делать тоже самое в пределах одной страницы, и как бонус парсит переменные с hash

<a href="#x=123&y=100">Scroll to  x/y</a>
     <a href="#scrollTo=#scrollID">ScrollTo element selector (id)</a>
     <a href="#scrollTo=.class">ScrollTo element selector (class)</a>
    <a href="path/to/page.php#scrollTo=.class">ScrollTo element selector (class)</a>


function decodeScrollPos(hide) {
             var params = {}, el, loc = window.location, hash = loc.hash.substr(1);

             hide && (loc.hash = "");

             hash.split('&').forEach(function (raw) {
                 var data = raw.split('=');
                 data[0] && (params[data[0]] = data[1] || "");
             })
             setTimeout(function () {
                 if (params.x || params.y) {
                     console.log('scroll=', hash);
                     window.scrollTo(params.x, params.y);
                 } else if (params.scrollTo) {
                     (el = document.querySelector(params.scrollTo)) && el.scrollIntoView && el.scrollIntoView(true);
                 }
             }, 100);
             return params;
         }


         window.onhashchange = function () {
             decodeScrollPos(true);
         }

         console.log(decodeScrollPos(true));


Если хотите не показывать hash в адресе после перехода после скроллинга можно его обнулить ..но зачем
window.location.hash="";
Ответ написан