2015-02-26 3 views
1

В настоящее время я стараюсь улучшить восприятие веб-приложения, гарантируя, что логотип компании загружается впереди javascript.Как загрузить изображение перед javascript

Для этого я переместил ссылки на javascript ниже элемента img для логотипа компании.

Например:

<img src="/Images/Logo.jpg" alt="My Company"/> 
<script type="/Scripts/MyScripts.js"></script> 

При взгляде на Google Chrome Инструменты разработчика я могу видеть, что призыв к логотипу сделан, однако он остается в «ожидании», пока все Javascript на странице не была загружена.

Почему это происходит? Как я могу гарантировать, что логотип компании загружен перед javascript?

ответ

1

Попробуйте использовать для своих скриптов $(window).load, если вы используете jQuery.

$(window).load(function() { 
    //put js code here 
}); 

Согласно this site:

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

Что касается отдельных файлов, которые вы должны добавить на свой сайт, используя <script src='path/to/file'>, я рекомендую использовать $.getScript.

$.getScript("path/to/file"); 

Вот $.getScriptmanual.

+0

Благодаря Марк, вы предлагаете, что я двигаюсь все мои JavaScript ссылки в яваскрипта вызова в триггер загрузки окна? – Curt

+0

@ Курт, да, для ваших сценариев страниц. Если вам также нужны другие файлы javascript, которые вы импортируете из отдельных файлов для загрузки после, то я рекомендую использовать '$ .getScript'. Я редактировал его в свой вопрос. –

0

Браузеру необходимо загрузить и выполнить JS-файлы, как только появится во время разбора разметки HTML (по крайней мере, из-за возможного использования document.write в скриптах).

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

<script type="text/javascript"> 
window.addEventListener("load",function() { 
    var elem = document.createElement("script"); 
    element.src = "file.js"; 
    document.body.appendChild(element); 
, false); 
</script> 
+0

'как только происходит во время разметки HTML. Однако мое изображение определено выше скрипта. Почему это не скачано первым? – Curt

+0

Браузер загружает ресурсы после построения целого DOM, но JS блокирует конструкцию DOM. Даже если современные браузеры запрашивают изображения, как только они встречаются в разметке (по соображениям производительности) Конструкция DOM приостанавливается, когда встречается тег сценария, т.е. выполняется скрипт и только то DOM создается (и отображается). – cyberskunk

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