Прокрутите html-страницу на основе строки запроса, указанной в URL-адресе

Я не знаю, как заставить html-страницу прокручивать определенную строку, являющуюся частью URL-адреса.

Например: если предположим, что пользователь дает

HTML-страница содержит множество значений времени utc, основанных на заданном пользователем значении utc в URL-адресе, страница должна прокручиваться до того utc, который пользователь указал в URL-адресе.

Не могли бы вы предложить, как это сделать в html, javascript и т.д.?

Дубликат: stackoverflow.com/a/63887613/1307020

Saturnix 15.04.2023 15:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
81
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте следующий код:

var vars = [],
  hash = '';
var hashes = window.location.href;
var decodedurl = decodeURIComponent(hashes);
var newurl = decodedurl.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < newurl.length; i++) {
  hash = newurl[i].split('=');
  console.info(hash);
  vars[hash[0]] = hash[1];
}

setTimeout(function() {
  if (vars['utc'] !== undefined && vars['utc'] == '1234567890 ') {
    const element = document.getElementById("utc_1234567890");
    element.scrollIntoView({ behavior: 'smooth'});
  }
}, 3000);

Замените utc_1234567890 в коде идентификатором вашего элемента div, чтобы прокрутить его, и замените 1234567890 соответствующим значением utc в URL-адресе.

Спасибо за ваше время в ответ. В моем проекте не используется jquery, поэтому я не могу попробовать приведенный выше фрагмент кода. Я могу просто использовать простой javascript, и мой проект использует jsp для создания html-страницы.

vrreddy1234 16.04.2023 08:18

Я обновил код до javascript. Пожалуйста, отметьте ответ как принятый, если он работает

Roby Raju Oommen 16.04.2023 19:25
Ответ принят как подходящий

Используйте метод URL searchParams и scrollIntoView().
Рабочий пример на codepen.
В приведенном ниже примере будет прокрутка до блока, если URL-адрес содержит ?utc=123:

;(() => {
  const params = ( new URL(location.href) ).searchParams;
  const id = params.get('utc');
  const block = document.getElementById(`utc-${id}`);
  if (block) {
    setTimeout(() => block.scrollIntoView({ behavior: 'smooth' }), 20)
  }
})();
/* for testing */
#utc-123 {
  margin: 100vh 0;
}
<div id = "utc-123">utc-123</div>

Спасибо .. я использую jsp для создания html-страницы, я пытаюсь найти, как вызвать приведенный выше фрагмент кода (то есть код javascript) из моего jsp. Я пробовал window.onload(), но почему-то этот window.onload() не вызывается. Если есть какие-либо идеи, пожалуйста, поделитесь по этому поводу.

vrreddy1234 16.04.2023 08:17

Просто добавьте этот код в тег <script></script> в самом низу страницы перед закрывающим тегом </body>.

imhvost 16.04.2023 10:03

По сути, ваш браузер автоматически перейдет к якорной ссылке, как только она появится в URL-адресе. то есть ?utc=7 автоматически переходит к месту в DOM, где установлен якорь, когда вы вызываете ссылку. Так что к месту <div id = "7">Hello World</div>. Если вы манипулируете URL-адресом в спа-приложении, возможно, что браузер не сразу перейдет к этому местоположению. здесь вы можете вызвать это через API местоположения js или просто вызвать перезагрузку страницы ;-) (самый простой способ).

Вот небольшой пример на тему анкоров в целом.

const navLinks = document.querySelectorAll('a');

navLinks.forEach(a => {
  a.addEventListener('click', e =>  {
    const tgt = e.target.getAttribute('href')
    alert("jump to:" + tgt)
  })
});
.page {
  height: 100vh;
}

ul {
  position: fixed;
  background: green;
}

section {
  border-bottom: 3px solid red;
  height: 50%;
  background-color: yellow;
  margin-bottom: 10px;
}
<div class = "page">
  <ul>
    <l><a href = "#1">1</a></li>
    <l><a href = "#2">2</a></li>
    <l><a href = "#3">3</a></li>
    <l><a href = "#4">4</a></li>
  </ul>
  <section id = "1">1</section>
  <section id = "2">2</section>
  <section id = "3">3</section>
  <section id = "4">4</section>
</div>

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