Убедиться, что страница действительно загружена, не всегда легко.особенно для страниц, которые используют контент через Ajax, и другие ресурсы, которые загружаются асинхронно (каждый ресурс может быть загружен независимо и параллельно с другими ресурсами, такими как изображения, например).
Мое предложение по подходу к таким ситуациям:
Создайте некоторый глобальный отложенный объект (обещание) и убедитесь, что он будет разрешен только после того, как все, от чего он зависит, будет «готов».
Минимальный пример:
// start your web app code..
var p1 = new Promise();
var p2 = new Promise();
var p3 = new Promise();
// when all dependencies are done loading, means the page is truly "ready"
Promise.all([p1, p2, p3])
.then(() => {
// page done loading
});
// somewhere in the code...wait for Ajax content to load
// and resolve "p1" after the content has loaded
p1.resolve();
// somewhere in the code...wait for some other Ajax content to load
// and resolve "p2" after the content has loaded
p2.resolve();
// somewhere in the code...wait for all the images to load
// (http://stackoverflow.com/a/1977898/104380)
// and resolve "p3"
p3.resolve();
Дело в том, что вам нужно вручную убедиться, что все различные асинхронные детали полностью загружены.это утомительная работа, но очень надежное решение.