Событие при изменении window.location.href

Я пишу сценарий Greasemonkey для сайт, который в какой-то момент изменяет location.href .

Как получить событие (через окно . addEventListener или что-то подобное), когда window.location.href изменяется на странице? Мне также нужен доступ к DOM документа, указывающего на новый / измененный URL.

Я видел другие решения, которые включают тайм-ауты и опросы, но я бы хотел этого избежать, если это возможно.

62
задан newenglander 3 February 2017 в 13:39
поделиться

2 ответа

Вы не можете избежать опроса, нет никаких событий для изменения href.

В любом случае использовать интервалы довольно легко, если вы не переборщите. Проверка href каждые 50 мс или около того не окажет существенного влияния на производительность, если вас это беспокоит.

23
ответ дан 24 November 2019 в 16:42
поделиться

А вы раньше пробовали выгрузить? Это событие запускается непосредственно перед тем, как страница ответит на запрос навигации, и это должно включать изменение href.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="Generator" CONTENT="TextPad 4.6">
    <META NAME="Author" CONTENT="?">
    <META NAME="Keywords" CONTENT="?">
    <META NAME="Description" CONTENT="?">
    </HEAD>

         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
            <script type="text/javascript">
            $(document).ready(function(){
                $(window).unload(
                        function(event) {
                            alert("navigating");
                        }
                );
                $("#theButton").click(
                    function(event){
                        alert("Starting navigation");
                        window.location.href = "http://www.bbc.co.uk";
                    }
                );

            });
            </script>


    <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">

        <button id="theButton">Click to navigate</button>

        <a href="http://www.google.co.uk"> Google</a>
    </BODY>
    </HTML>

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

7
ответ дан 24 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: