используя javascript setTimeout, чтобы увидеть, загрузил ли div - PullRequest
0 голосов
/ 21 апреля 2010

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

Проблема заключается в том, что функции javascript не видят элемент div при загрузке страницы, поскольку это удаленные данные.,если я устанавливаю тайм-аут около 300, это обычно работает, и мой javascipt может видеть div.Но иногда это занимает больше времени и нарушает работу javascript.

Я пишу следующее:

function load_content()
{
  if(document.getElementById('remote_div')==null)
  {
  setTimeout('load_content()', 300);
  }
  else
  {
  document.getElementById('remote_div').innerHTML = 'Content goes here'
  }
}

, но, похоже, это не работает ... что с ним не так?

Ответы [ 2 ]

3 голосов
/ 21 апреля 2010

Вы можете сделать это, используя setInterval. Что-то вроде:

var intrval = setInterval( function(){
  if(document.getElementById('remote_div')) {
      load_content();
       clearInterval(intrval);
 }, 50);

function load_content() {
   //loading content here
}

Таким образом, вам не нужно оценивать время загрузки. load_content выполняется, когда div # remote_div находится в дереве DOM.

Отредактировано на основе комментариев, забыл назначить интервал, так что он действительно никогда не будет очищен.

0 голосов
/ 21 апреля 2010

Используете ли вы iframe?

Если так, попробуйте

document.getElementById('YOUR_IFRAME_ID').contentWindow.document.getElementById('remote_div')
...