0

Как определить модификацию window.location, которая производится между тегами <head>?onunload и onbeforeunload не запускаются при изменении местоположения

Когда я выполняю нижеследующее в консоли хром, я получаю свой console.log, как ожидалось.

window.onbeforeunload = function(){ 
    console.log("Before Unload"); 
}; 
window.location.replace("http://www.google.com"); 

Однако Если я помещаю этот фрагмент в файле JS, помещенном в <head> моей страницы, то мой console.log не будет появляться, и кажется, что onbeforeunload и onunload никогда не срабатывают. Я уверен, что фрагмент кода выполнен правильно, так как я могу пройти через каждую строку с помощью инструкции отладчика.

Как определить, есть ли изменение местоположения на странице <head> страницы до загрузки моего тела? Я не могу перезаписать window.location.replace, так как он непригоден.

Вот простой пример кода, который воспроизводит мой вопрос

<head> 
    <script type="text/javascript"> 
    var function1 = function() { 
     window.onunload = function() { 
      console.log("onunload"); 
     } 
    } 
    var function2 = function() { 
     window.location.replace("http://www.google.com"); 
    } 
    function1(); 
    function2(); 
    </script> 
</head> 

<body> 
    This is my test 
</body> 

Ограничение у меня есть то, что я могу изменить только содержание function1.

Edit: Фактическое использование дело следующим образом: У меня есть сценарий в заголовке веб-сайта. Я могу написать все, что хочу в этом скрипте, но у меня нет контроля над остальной частью сайта. В некоторых случаях есть сценарий сразу после моего, который будет перенаправлять. Мне нужно установить файл cookie, если это так.

+0

Его рабочих .. Я назвал функцией 2 из SetTimeout и теста с светлячок и проверить в консоли с сохранением включена опция. Обнаружил, что он работает правильно. –

+0

Я не влияю на функцию2. Я могу только изменить функцию 1. Я добавлю это в описание. Дело в том, что, похоже, событие не срабатывает, если ваше тело не загружено. Просто интересно, как это сделать без этих событий. – Guillaume

+0

Не могли бы вы объяснить, каково ваше требование. –

ответ

0

«pagehide» событие вызовет в этом случае вместо «beforeunload»