9

Как проверить наличие #хеша в URL с помощью JavaScript?

13

У меня есть некоторый код на jQuery/JavaScript, который я хочу выполнять только в том случае, если в URL присутствует якорная ссылка с символом #. Как я могу проверить наличие этого символа с помощью JavaScript? Мне нужен простой тест, который будет обнаруживать URL-адреса, такие как эти:

  • example.com/page.html#anchor
  • example.com/page.html#anotheranchor

В общем, что-то вроде:

if (thereIsAHashInTheUrl) {
    do this;
} else {
    do this;
}

Пожалуйста, подскажите, как можно реализовать такую проверку.

5 ответ(ов)

3

Вот перевод кода и пояснение на русском языке в стиле ответа на StackOverflow:

if (window.location.hash) {
    var hash = window.location.hash.substring(1); // Сохраняем хэш в переменную, удаляя символ #
    alert(hash); // Показываем хэш в виде алерта
    // Хэш найден
} else {
    // Хэш не найден
}

Этот код проверяет, есть ли у текущего URL часть хэша (например, #example). Если хэш присутствует, он сохраняется в переменной hash (при этом символ # удаляется с помощью метода substring(1)) и выводится с помощью алерта. Если хэша нет, выполняется другой блок кода. Вы можете использовать этот подход для обработки различного контента на странице в зависимости от хэша в URL.

0

Вы можете использовать следующий код 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, которая идет после #.

0

Если URI не указывает на местоположение документа, то этот фрагмент кода выполнит нужное вам действие.

var url = 'example.com/page.html#anchor',
    hash = url.split('#')[1];

if (hash) {
    alert(hash);
} else {
    // выполните что-то другое
}

В данном примере мы разбиваем строку URL по символу # и получаем часть после него. Если эта часть (хеш) существует, то выводим её в виде всплывающего окна. В противном случае можно выполнить другие действия.

0

Вы пробовали использовать такой код?

if (url.indexOf('#') !== -1) {
    // URL содержит символ #
}

(Где url — это URL, который вы хотите проверить, само собой разумеется.)

0

Ваш код работает следующим образом: при клике на элемент с идентификатором myanchor устанавливается хэш-значение в адресной строке браузера на "myanchor". Это происходит благодаря строке window.location.hash = "myanchor";. Поскольку мы возвращаем false, это предотвращает типичное поведение браузера при переходе по якорю, что позволяет вам контролировать переход.

Кроме того, вы привязываете обработчик события hashchange к окну, который реагирует на изменения хэша в URL. Внутри этого обработчика вы извлекаете текущее значение хэша с помощью window.location.hash.slice(1), чтобы удалить символ #. Это позволяет вам выполнять необходимые действия при изменении хэша, что дает больше возможностей для взаимодействия с пользовательским интерфейсом.

Таким образом, этот подход позволяет избежать нежелательных прокруток и дает вам возможность обрабатывать события, связанные с изменением хэша. Это действительно решает вашу задачу! 😉

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь