Как проверить наличие #хеша в URL с помощью JavaScript?
У меня есть некоторый код на jQuery/JavaScript, который я хочу выполнять только в том случае, если в URL присутствует якорная ссылка с символом #
. Как я могу проверить наличие этого символа с помощью JavaScript? Мне нужен простой тест, который будет обнаруживать URL-адреса, такие как эти:
example.com/page.html#anchor
example.com/page.html#anotheranchor
В общем, что-то вроде:
if (thereIsAHashInTheUrl) {
do this;
} else {
do this;
}
Пожалуйста, подскажите, как можно реализовать такую проверку.
5 ответ(ов)
Вот перевод кода и пояснение на русском языке в стиле ответа на StackOverflow:
if (window.location.hash) {
var hash = window.location.hash.substring(1); // Сохраняем хэш в переменную, удаляя символ #
alert(hash); // Показываем хэш в виде алерта
// Хэш найден
} else {
// Хэш не найден
}
Этот код проверяет, есть ли у текущего URL часть хэша (например, #example
). Если хэш присутствует, он сохраняется в переменной hash
(при этом символ #
удаляется с помощью метода substring(1)
) и выводится с помощью алерта. Если хэша нет, выполняется другой блок кода. Вы можете использовать этот подход для обработки различного контента на странице в зависимости от хэша в URL.
Вы можете использовать следующий код JavaScript для работы с хешем в URL. Этот скрипт проверяет, содержит ли текущий URL символ #
, и если да, то вы можете получить строку, начиная с этого символа:
<script type="text/javascript">
if (location.href.indexOf("#") != -1) {
// Ваша логика здесь для доступа к строке
var hashString = location.href.substr(location.href.indexOf("#"));
console.log(hashString); // Пример использования
}
</script>
Этот код сначала проверяет, присутствует ли символ #
в URL (location.href
). Если он есть, вы можете использовать метод substr
или другие методы для работы с частью URL, которая идет после #
.
Если URI не указывает на местоположение документа, то этот фрагмент кода выполнит нужное вам действие.
var url = 'example.com/page.html#anchor',
hash = url.split('#')[1];
if (hash) {
alert(hash);
} else {
// выполните что-то другое
}
В данном примере мы разбиваем строку URL по символу #
и получаем часть после него. Если эта часть (хеш) существует, то выводим её в виде всплывающего окна. В противном случае можно выполнить другие действия.
Вы пробовали использовать такой код?
if (url.indexOf('#') !== -1) {
// URL содержит символ #
}
(Где url
— это URL, который вы хотите проверить, само собой разумеется.)
Ваш код работает следующим образом: при клике на элемент с идентификатором myanchor
устанавливается хэш-значение в адресной строке браузера на "myanchor"
. Это происходит благодаря строке window.location.hash = "myanchor";
. Поскольку мы возвращаем false
, это предотвращает типичное поведение браузера при переходе по якорю, что позволяет вам контролировать переход.
Кроме того, вы привязываете обработчик события hashchange
к окну, который реагирует на изменения хэша в URL. Внутри этого обработчика вы извлекаете текущее значение хэша с помощью window.location.hash.slice(1)
, чтобы удалить символ #
. Это позволяет вам выполнять необходимые действия при изменении хэша, что дает больше возможностей для взаимодействия с пользовательским интерфейсом.
Таким образом, этот подход позволяет избежать нежелательных прокруток и дает вам возможность обрабатывать события, связанные с изменением хэша. Это действительно решает вашу задачу! 😉
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
jQuery: Получение Выбранного Значения Из Выпадающего Списка
Как проверить радио-кнопку с помощью jQuery?
Кэширует ли Safari на iOS 6 результаты $.ajax?