Stack Overflow на русском Asked by trollDemiurg on January 1, 2022
document.location.href = '/home';
console.log('before');
document.onload = function(){
setTimeout(function(){
console.log('fancy')}, 30000);
};
console.log('after');
в консоли:
before
after
XHR finished loading: GET "https://-------/home".
Navigated to https://------/home
После редиректа setTimeout не работает, ищу совета. Вместо document.onload = function()… просто setTimout тоже к консоль не пишет.
Можно реализовать загрузку и подмену контента, по аналогии с SPA (Single Page Application).
console.log('before');
let destination = "/home";
fetch(destination).then((response) => response.ok && response.text().then((html) => {
window.history.pushState({}, "", destination);
document.getElementsByTagName('html')[0].innerHTML = html;
setTimeout(() => {
console.log('fancy')
}, 30000);
}));
console.log('after');
Answered by renich on January 1, 2022
Когда загружается новая страница, браузер уже не помнит, что было запущено на предыдущей. Один из вариантов решения:
Вместо /home, направить на адрес с каким-нибудь параметром:
document.location.href = '/home?l=0';
И уже на home заранее подготовить скрипт,
let fn_storage = {
"0": function() {
console.log("code ?l=0");
},
"moo": function() {
console.log("code ?l=moo");
},
};
let key = ( window.location.search.match(/l=(.*?)(&|$)/) || [0,0] )[1];
if (key) setTimeout(fn_storage[key], 5000);
Еще, можно использовать localStorage, sessionStorage
Answered by OPTIMUS PRIME on January 1, 2022
Вы редиректите страницу а на старой поставили setTimeout(...); Что вы хотите увидеть она даже если и загрузилась ее уже нет к тому времени.
Если вы хотите запустить скрипт на новой странице. Это будет делать та самая страница и ее скрипт либо делайте как все SPA подгружаете контент и обрабатываете.
Вон подкатили ответ снизу.
Answered by Aziz Umarov on January 1, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP