2009-06-04 3 views
3

У меня есть некоторые функции, которые я вызываю, и они занимают некоторое время (миллисекунды), но я не хочу, чтобы страница отображалась до тех пор, пока эти функции не будут завершены. Сейчас я могу сказать, что страница загружается, а затем скрипты завершаются.Javascript: есть функция загрузки тела до завершения скриптов

Прямо сейчас, я вызываю функции в корпусе onload.

Кроме того, еще один вопрос, который я, возможно, является то, что мне нужно, чтобы получить доступ Div элементов в содержании HTML, я могу это сделать в моем теле OnLoad функции (getElementById («somDiv»)?

Вот рабочий процесс.

  1. сделать вызов getElementById ('someDiv'), чтобы получить элемент на странице.

  2. вызов функции SomeFunc, эта функция находится в OnLoad тела = SomeFunc()

  3. Подождите, пока не закончится какая-либо функция Func

  4. Показать страницу после завершения моей функции.

ответ

5

Что вы можете сделать, это сохранить содержимое своей страницы в div, который изначально был создан с помощью display:none. Затем, когда ваш Javascript код завершения, обновить стиль на div к display:block, например .:

<html> 
    <head> 
     ... 
     <style type="text/css"> 
      html, body, #body { 
       height: 100%; 
       width: 100%; 
       padding: 0; 
       margin: 0; 
      } 
      #body { 
       display: none; 
      } 
     </style> 
     <script type="text/javascript"> 
      function myFunc() { 
       ... 
       getElementById('body').style.display = 'block'; 
      } 
     </script> 
    </head> 
    <body onload="myFunc();"> 
     <div id="body> 
      ... 
     </div> 
    </body> 
</html> 

Тогда Боб твоему дяде: страница выглядит не задерживала загрузку, пока ваш сценарий закончен.

0

Функция onLoad тела запускается, когда DOM завершил загрузку - это означает, что все элементы HTML полностью загружены. Таким образом, ваша функция onload сама должна предположить, что все загружено и готово к работе, так как его выполнение выполняется по этим правилам.

1

функции, которые вызываются в onLoad событии <body> тега только вызывается, когда DOM загружен (однако он не ждать внешних зависимостей, таких как JavaScript файлов и CSS для загрузки), так что вы можете быть уверены, что, когда ваш someFunc() вызывается функция (если она присоединена к событию <body>onLoad), элементы на странице были загружены. Если вы хотите получить доступ к DIV, который загружен на странице, вы можете быть уверены, что он будет загружен при вызове функции someFunc().

Чтобы решить вашу проблему, вы можете обернуть содержимое вашей страницы в DIV, а display изначально установить на none. Затем, когда страница загружена, вызывается функция someFunc(). Когда он закончит выполнение, вы можете установить display вашей обертки DIV на block, чтобы он был видимым для пользователя.

Однако убедитесь, что вы информируете пользователя о том, что страница загружается, и вы просто не показываете им пустой экран, пока загружается ваш JavaScript.

+0

Отличная идея и хорошее описание. Из-за кода я дал другому парню ответ. –

Смежные вопросы