Как определить, когда веб-страница загружена? - PullRequest
12 голосов
/ 06 февраля 2009

Я хочу написать приложение, которое определяет, когда страница загружается в браузере, тогда я смогу вставить контент поверх загруженной веб-страницы? Кто-нибудь с идеей, как это сделать?

Обратите внимание, что я могу сделать это в любом браузере (Firefox / IE).

Какой язык мне использовать, чтобы помочь мне сделать это?

Как я могу обнаружить это из внешнего приложения?

Как мне интегрировать это с браузером?

Ответы [ 8 ]

23 голосов
/ 06 февраля 2009

Вы бы использовали JavaScript для этого. Если вы не знаете, как использовать javascript, я бы рекомендовал прочитать некоторые учебные пособия сначала .

Получив базовые знания о javascript, вы можете определить время загрузки страницы с помощью события window.onload.

window.onload = function() {
  addPageContents();  //example function call.
}

Редактировать: Если вы хотите добавить более одной функции загрузки и не использовать библиотеку JavaScript, вы можете обернуть свой собственный обработчик загрузки.

window.whenloaded = function(fn) {
  if (window.onload) {
    var old = window.onload;
    window.onload = function() {
      old();
      fn();
    }
  } else {
    window.onload = fn;
  }
}
16 голосов
/ 11 февраля 2009

Почему бы не использовать слушателей?

// Everything but IE
window.addEventListener("load", function() {
    // loaded
}, false); 

// IE
window.attachEvent("onload", function() {
    // loaded
});

Таким образом, вы можете добавить столько слушателей, сколько захотите, вы также можете отключить их! removeEventListener и detachEvent.

13 голосов
/ 06 февраля 2009

Лучше, чем onload, использовать функцию существующего фреймворка, потому что onload иногда отвечает после загрузки всех ресурсов (изображений и т. Д.), А не только страницы.

Например, jQuery:

$(document).ready( function() {
    // do stuff
})
3 голосов
/ 18 мая 2018

Ваш запрос может быть легко решен по этой полезной ссылке: OnLoad W3School

Если вы хотите загрузить статус:

Вы можете сделать это, используя простой Javascript

if (document.readyState == "complete") {
    alert("Your page is loaded");
}

Возвращаемое значение : строка, представляющая статус текущего документа.

Одно из пяти значений:

  • неинициализирован - загрузка еще не началась
  • загрузка - идет загрузка
  • загружено - загружено
  • интерактивный - достаточно загружен, и пользователь может взаимодействовать с ним
  • завершено - полностью загружено

Для получения более подробной информации посетите W3Schools - document.readystate .

Надеюсь, это прояснит ваши мысли.

2 голосов
/ 06 февраля 2009

Javascript, использующий событие onLoad () , будет ожидать загрузки страницы перед выполнением.

<body onload="somecode();" >

Если вы используете функцию готовности документа в инфраструктуре jQuery, код будет загружаться сразу после загрузки DOM и до загрузки содержимого страницы:

$(document).ready(function() {
    // jQuery code goes here
});
2 голосов
/ 06 февраля 2009

В Javascript у вас есть событие onload .

Редактировать: пример:

<html>
  <head>...</head>
  <body onload="doSomethingWhenPageIsLoaded();">
    ...
  </body>
</html>
1 голос
/ 06 февраля 2009

Событие Javascript OnLoad для тела делает то, что вы хотите.

<body onload="somefunc();">
0 голосов
/ 08 февраля 2019

Я предпочитаю это решение:

 /**
  * The addEventListener() method attaches an event handler to the specified element.
  * @param {*} event Type of the event (like 'load', 'click' or 'onchange' ...)
  * @param {*} obj When the event occurs, an event object is passed to the function as the first parameter. The type of the event object depends on the specified event
  * @param {*} fn Specifies the function to run when the event occurs. 
  */
 function addListener(event, obj, fn) {
    if (obj.addEventListener) {
       obj.addEventListener(event, fn, false);   // modern browsers
    } else {
       obj.attachEvent("on"+event, fn);          // older versions of IE
    }
}


// Thge event emitter will be emitted when page is loaded
addListener('load', window, function(event) {
    alert("Your page is loaded");
});

Конечно, вы можете добавить больше разных addEventListener, например click, onChange и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...