Как проверить, готов ли документ?

Как проверить, готов ли документ (все js загруженные файлы, DOM готов) через jQuery? Есть ли какой-либо флаг?

При сталкивании с проблемами, если некоторые файлы не загружаются полностью, и событие генерируется пользователем. Я хочу проверить внутренний обработчик событий.

Я использую jQuery, asp.net

22
задан BalusC 12 May 2010 в 14:30
поделиться

8 ответов

Я не думаю, что это не задокументировано, но если вы посмотрите код jQuery для $ (document) .ready :

// If the DOM is already ready
if ( jQuery.isReady ) {
  // Execute the function immediately
  fn.call( document, jQuery );
} // ...

Таким образом, чтобы изменить способ, вы можете использовать $. IsReady или jQuery.isReady .

Лучше использовать в строке $ (document) .ready . Например: [

function myClickHandler(event) {
  // do stuff

  $(document).ready(function() {
    // Do this immediately if DOM is loaded, or once it's loaded otherwise.
  }
}

] По сути, это использует функцию готовности в качестве защиты. Вместо оператора if вы используете функцию ready. Конечно, функция готовности имеет поведение, которое будет запускаться после загрузки DOM. Если ваше поведение просто хочет, чтобы что-то произошло, если он загружен, но никогда этого не делает, если DOM еще не загружен, то лучше использовать флаг, указанный выше, или установить свой собственный. Установка собственного:

$(document).ready(function() {
  window.domIsReady = true;
}

if (window.domIsReady) {
  // do stuff
}

Создание собственного, вероятно, лучше, поскольку jQuery.isReady , похоже, не документирован, и поэтому, вероятно, не поддерживается и может быть изменен в любое время.

26
ответ дан 29 November 2019 в 04:29
поделиться

Простой вызов функции, чтобы узнать, загружена ли вообще база.

   jQuery(document).ready(function(){ 
      alert("howdy");  
    }); 

альтернатива, узнать, загружена ли она (лучше)

<script type="text/javascript">  
if (typeof jQuery == 'undefined')  
{  
    alert('not loaded'); 
}  
</script>

ДЛЯ КОРОТЫШЕЙ: (typeof не нужен :)

<script type="text/javascript">  
    if(!this.$) 
    {  
        alert('not loaded'); 
    }  
    </script> 
3
ответ дан 29 November 2019 в 04:29
поделиться

Это вопрос с подвохом? :)

То, что вы ищете - document.ready

Пример:

  $(document).ready(function() {

   alert ("document is ready!");

  });
5
ответ дан 29 November 2019 в 04:29
поделиться

Вы случайно не ищете родное событие window.onload ? Он запускается, когда все на странице (включая сценарии, изображения, таблицы стилей) загружено.

function doStuff() {
    alert("The DOM and everything inside have loaded");
}
window.onload = doStuff; 

См. Также: addLoadEvent .

0
ответ дан 29 November 2019 в 04:29
поделиться

Думал, что код document.ready запускался только при загрузке документа и всех файлов. У меня никогда не было с этим проблем.

Если бы у меня была проблема, я бы либо поместил переменную во все необходимые файлы, и проверил, складываются ли они, поместив весь код в один файл.

Простите, что не опубликовал окончательный ответ

0
ответ дан 29 November 2019 в 04:29
поделиться

У Jquery есть следующее:

$(document).ready(function(){ 
    alert('document ready here') 
}); 

Стало довольно распространенной практикой заворачивать любой jquery, который манипулирует DOM, в блок $(document).ready(), чтобы убедиться, что DOM весь там, прежде чем продолжить.

1
ответ дан 29 November 2019 в 04:29
поделиться
$(document).ready(function() {
  // Handler for .ready() called.
});
7
ответ дан 29 November 2019 в 04:29
поделиться

http://api.jquery.com/ready/ - пример внизу страницы

2
ответ дан 29 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

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