Задача такая: есть форма поиска (поиск обычный, без ajax), и после перезагрузки страницы необходимо пользователя отправить к нужному блоку (скролл до определённого места страницы, а именно к форме поиска, прокрутив ниже, оставив позади шапку с меню).
Второй вариант: найти определённый ключ в ссылке и если он есть выполнить скролл до блока с нужным id.
Ссылка имеет вид _https://domen/razdel/?query=search_key
Собственно зоной интереса является ?query, т.к. всё остальное может меняться.
Нашёл свойства window.location.search, это при помощи него надо реализовывать? бы бы благодарен правильному решению.
Если описать функцию целиком, то так: если страница меньше 1000 px в ширину (определить при загрузке) -> если в ссылке содержится ?query -> выполнить скролл до объекта с id="main" с отступом сверху от него на 50px.
И главное, чтобы это можно было реализовать на чистом js, т.к. jquery я подключаю в конце страницы.
К сожалению в сниппете не работает, видимо скрипт снипета выполняется в SandBox, на реальном файле, работает.
Когда будете тестировать на реальном файле, просто добавьте после открытия в конец например ?query=2
, на файл это не повлияет, но позволит скрипту сработать.
Почему сделан setTimeout
смотрим в уточняющих комментариях.
function tryScroll() {
if (window.location.search.indexOf("?query") >= 0 && document.body.clientWidth < 1000) {
var el = document.getElementById("main");
window.scroll(0, findScrollPosition(el) + 50);
}
}
function findScrollPosition(obj) {
var curtop = 0;
if (obj.offsetParent) {
do {
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
return curtop;
}
}
window.onload = function() {
window.setTimeout(tryScroll, 0);
};
.start {
background-color: pink;
height: 500px;
}
#main {
background-color: green;
}
.end {
background-color: yellow;
height: 100px;
}
<div class="start">
start
</div>
<div id="main">
main
</div>
<div class="end">
end
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть несколько инпутов с предустановленными значениями(берутся из БД):
Нужно, чтобы человек открыл письмо и в нём посмотрел Youtube видеоHTML-код для встраивания видео от Youtube в теле письма не работает
Нужно написать выпадающий список, так чтобы пользователь мог отметить несколько значений