Как перехватить событие window.location?

Ссылка скопирована
1 ответ

Как можно перехватить событие на странице window.location если не известно когда и кто его вызывает, возможно ли сделать перехват и получить параметры с которыми будет вызываться событие window.location?
К примеру перед location будет в консоль писаться параметры с которыми должно выполниться window.location и вызываться alert() чтобы моментально не проищошла перезагрузка...

P.S. был не точен, свойство назвал событием. Имелось ввиду как перехватить редирект на странице когда он происходит.

Дополнительно:

А разве это событие, а не свойство объекта window, которое возвращает объект Location?

  • mikitachyzhyk, согласен, автор заблуждается. window.location - это property, а не event
  • нет такого события.
  • Если автор поподробнее опишет что он хочет реализовать таким образом, ему помогут.
  • Мне кажется, автор хочет узнать, куда посетитель уйдет с его страницы. Полагаю, это невозможно, если он уходит на другой сайт.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Алексей Денисов Ответ

    Для перехвата события изменения URL в объекте window.location можно использовать объект window.history. Существует два способа достичь этого:

    1. Использование события popstate:
    ```php

    window.addEventListener('popstate', function(event) {
        console.log('URL был изменен');
    });

    window.addEventListener('popstate', function(event) { console.log('URL был изменен'); });

    ```

    2. Использование метода pushState или replaceState:
    ```php

    var originalPushState = window.history.pushState;
    window.history.pushState = function() {
        originalPushState.apply(this, arguments);
        console.log('URL был изменен');
    };
     
    var originalReplaceState = window.history.replaceState;
    window.history.replaceState = function() {
        originalReplaceState.apply(this, arguments);
        console.log('URL был изменен');
    };

    var originalPushState = window.history.pushState; window.history.pushState = function() { originalPushState.apply(this, arguments); console.log('URL был изменен'); }; var originalReplaceState = window.history.replaceState; window.history.replaceState = function() { originalReplaceState.apply(this, arguments); console.log('URL был изменен'); };

    ```

    Оба способа позволяют отслеживать изменения URL в объекте window.location. Первый способ использует событие popstate, которое срабатывает при изменении истории браузера (например, при нажатии кнопок "назад" и "вперед"). Второй способ переопределяет методы pushState и replaceState объекта history, чтобы добавить обработчик изменения URL.

    Выберите подходящий способ в зависимости от ваших потребностей и требований вашего проекта. Надеюсь, это поможет вам успешно перехватить событие window.location и выполнить необходимые действия при его изменении.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно