Изначальная задача проста: программно открыть страницу по указанному урлу и что-нибудь сделать после этого, например вывести в консоль инфу о том, что все успешно загрузилось. Но по каким-то абсолютно пока непонятным для меня причинам onload не триггерится на некоторых сайтах, хотя все разрешения вроде бы у сайта есть. Код получился такой:
function loadPage(url) {
return new Promise((res, rej) => {
let my_lovely_window;
try {
my_lovely_window = window.open(url)
} catch (e) {
rej(e);
}
my_lovely_window.addEventListener('load', res, true);
my_lovely_window.addEventListener('error', rej, true);
});
}
loadPage('/')
.then(e => console.log(`page "${ decodeURIComponent(e.target.location.href) }" loaded successfully`))
.catch(e => console.log(`error occurred: `, e))
Код с логами
function loadPage(url) {
return new Promise((res, rej) => {
let my_lovely_window;
console.log(`starting procedure with url "${ url }"`);
try {
console.log(' creating window...')
my_lovely_window = window.open(url)
console.log(' window created!')
} catch (e) {
console.log('error!')
rej(e);
}
console.log(' setting listeners...')
my_lovely_window.addEventListener('load', res, true);
my_lovely_window.addEventListener('error', rej, true);
console.log(' listeners are set!');
});
}
loadPage('/')
.then(e => console.log(`page "${ decodeURIComponent(e.target.location.href) }" loaded successfully`))
.catch(e => console.log(`error occurred: `, e))
Поведение на разных сайтах (и платформах) разное:
Если выполнить этот код "/" на тостере, то в консоль выведется ошибка без сообщения. Вероятно это из-за редиректа,
В вк не триггерится ни ошибка, ни онлоад 0_0
Википедия.орг открывается нормально, но при попытке открыть не существующую страницу ведёт себя так же как вк - не триггерится не еррор, ни лоад.
Как отследить полную загрузку страницы во всех перечисленных случаях? В том числе как отследить загрузку 404ых страниц?