Как определить модификацию 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, если это так.
Его рабочих .. Я назвал функцией 2 из SetTimeout и теста с светлячок и проверить в консоли с сохранением включена опция. Обнаружил, что он работает правильно. –
Я не влияю на функцию2. Я могу только изменить функцию 1. Я добавлю это в описание. Дело в том, что, похоже, событие не срабатывает, если ваше тело не загружено. Просто интересно, как это сделать без этих событий. – Guillaume
Не могли бы вы объяснить, каково ваше требование. –