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

Как в Chrome заставить input type="submit" не скроллить экран вверх документа?

event.preventDefault(); / return false; - нельзя, иначе - будет плохо
Пытался юзать вот такой код
let submits = document.querySelectorAll('input[type="submit"]');

 submits.forEach(submit => {
   submit.onclick = stopScrolling;
 });

  function stopScrolling(event) {
    alert(window.scrollY);
    window.scrollTo(window.scrollY, window.scrollX);

  }

И другие свойства пытался использовать. Например, window.pageXOffset, window.pageYOffset, но такой код работать не может. Так подскажите, что же делать? И почему в хроме всё так печально? В мозилле всё нормально. Там после нажатия на input type="submit" Скроллится экран до секции с формой. В других браузерах не тестил.
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
Aetae
@Aetae Куратор тега JavaScript
Тлен
submit ничего не скролит, он отправляет форму. Когда форма отправляется - страница перезагружается.
Т.е. как костыль ты можешь запоминать перед submit координаты скролла(напр. в localStorage) и при загрузке скроллить по ним.
Ответ написан
Комментировать
fapchat
@fapchat Автор вопроса
Это сначала
let submits = document.querySelectorAll('input[type="submit"]');

submits.forEach(submit => {
  submit.onclick = getCoordinates;
  // let X = localStorage.getItem('X');
  // let Y = localStorage.getItem('Y');
  // submit.onsubmit = window.scrollTo(Y, X);

});

 function getCoordinates() {
   sessionStorage.setItem('Y', window.scrollY);
   //alert(sessionStorage.getItem('Y'));
}

После сабмита - вот это:
let Y = sessionStorage.getItem('Y');
       window.parent.scrollTo(0, Y);

Хотя лучше всё же просто передать форму через js, так как браузер выдаёт анимацию перезагрузки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
У вас случайно в action у формы не решетка стоит?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы