2010-09-22 5 views
1

Я ток с помощью JavaScript с этим тегомКак уменьшить задержку «Onload»?

<body onload="javascript:Mine();"> 

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

Благодаря

+0

В 'JavaScript: Mine() ; синтаксис неправильный; лучше использовать просто 'Mine();'. 'javascript:' - это протокол URI, который вы бы использовали в ссылках (например, ''), а не в обработчиках событий, таких как 'onload'. – Domenic

+0

В этом контексте это (бессмысленная) метка: https://developer.mozilla.org/en/JavaScript/Reference/Statements/label – Quentin

ответ

6

onload срабатывает при полной загрузке страницы. Для того, чтобы получить вещи, чтобы стрелять быстрее вы можете:

  • сделать загрузку страницы быстрее
    • Удалить, уменьшить и оптимизировать изображения (и другие материалы, объявления третьих лиц часто являются основным кикер производительности)
    • Следуйте рекомендациям по эффективности (например those from Yahoo!.)
  • Не использовать onload
    • Используйте библиотеку (например, YUI или Jquery), что обеспечивает domready событие
    • Выполнить скрипт в <script> напрямую (вместо назначения обработчика событий)
0

Очевидный ответ: Ускорить загрузку страницы.

onLoad означает, что эта функция будет запущена после того, как вся ваша страница закончит загрузку.

+0

Downvote! Уч. Извините, после прочтения снова это звучит снисходительно. Не хотел. –

+0

КАК кто-нибудь объяснить проще? – 5416339

+0

Дэвид Дорвард отлично поработал, проверьте его ответ. –

4

OnLoad ожидает, что все изображения и другие внешние ресурсы будут полностью загружены. Если вы только хотите знать, что все дерево DOM со всеми элементами HTML загружено, используйте OnDOMReady.

Обратите внимание, что это не тривиальная задача, если вы хотите, чтобы она хорошо работала во многих браузерах. Если вы используете JQuery, то они решили эту проблему для вас, и вы можете написать:

$(document).ready(function() { 
    Mine(); 
}); 

Но если нет, загрузка JQuery только для этой функции не может улучшить вашу загрузку страницы на всех. Еще одно решение, то было бы поставить вызов непосредственно перед </body>:

<body> 
    ... 
    <script type="text/javascript">Mine();</script> 
</body> 

Большинство ваших DOM дерева должны быть доступны для вас в этой точке, так что может быть путь.

+0

Я использую подход JQuery очень часто. Если вы не знаете JQuery, это определенно стоит того. – Luc

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