2016-07-29 3 views
4

Есть ли событие, которое срабатывает при изменении какой-либо части URL-адреса?Есть ли событие, которое срабатывает при изменении URL-адреса

Обнаружение изменений URL было задано много раз, но общие ответы устарели (~ 2010).

Резюме существующих ответов:

  • Вы можете использовать popstate для некоторых ситуаций (это делает огнь для всех изменений URL).

  • Вы можете использовать onbeforeunload, когда страница перемещается (и выгружает ее ресурсы).

  • Вы можете использовать событие hashchange, чтобы просмотреть изменения фрагмента хэша.

  • В противном случае кажется, что обычный ответ по-прежнему опрос для перехода на window.location.

опрашивает еще лучшим решением в ? Удивительно, что для этого нет события, учитывая другие улучшения в location и его API, поэтому я отправляю этот вопрос.

+0

Неа, не обычное явление для каждого изменения, но вы могли бы создать на основе других событий. – adeneo

+0

@adeneo - на какие события вы ссылаетесь? В настоящее время я пытаюсь обнаружить изменения URL, которые происходят на YouTube, когда вы перемещаетесь между видео. –

+0

Я думаю, используя popstate ist лучшее решение, а также хорошо поддерживает. Существуют ли какие-либо конкретные требования, почему вы не хотите его использовать? – Wolfgang

ответ

1

событие при использовании history.pushState() должно быть достаточно, чтобы принять меры по Href изменения:

window.addEventListener('popstate', listener); 

const pushUrl = (href) => { 
    history.pushState({}, '', href); 
    window.dispatchEvent(new Event('popstate')); 
}; 
Смежные вопросы