Задать вопрос
lazalu68
@lazalu68
Salmon

Как отследить полную загрузку страницы?

Изначальная задача проста: программно открыть страницу по указанному урлу и что-нибудь сделать после этого, например вывести в консоль инфу о том, что все успешно загрузилось. Но по каким-то абсолютно пока непонятным для меня причинам 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ых страниц?
  • Вопрос задан
  • 1828 просмотров
Подписаться 3 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Можно так попробовать.
Ответ написан
@Kirill-Gorelov
С ума с IT
Я вот этим пользуюсь
window.onload = function () {//тело функции}
//или
document.addEventListener("DOMContentLoaded", function() {
   //func
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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