2015-03-16 7 views
0

В моем приложении, основанном на ajax, в частности приложении GWT, есть div s со сценариями по скрытому HTML-индексу. Это объявления, которые переустановлены, поскольку приложение полностью загружено. Проблема с этим подходом заключается в том, что сценарии объявлений извлекаются сначала до того, как приложение полностью загружено, что приведет к задержке эффекта или медленной загрузке приложения.Задержка загрузки Загрузка скрипта и/или выполнение

Есть ли способ отложить загрузку этих скриптов внутри этих div, чтобы приложение могло изначально изначально загружаться, и на пользователя не может повлиять выборка скриптов и их выполнение до полной загрузки страницы?

например.

<script src="gwtapp.nocache.js"/> 
<div id="ad1"> 
    <script>...</script> 
</div> 

Существует довольно мало divs, которые необходимо отложить и в моем приложении. Есть ли способ для jQuery сделать div еще не загруженным и просто запускать его программно, когда время будет готово.

+0

Вы можете использовать короткий javascript, слушающий событие 'body.onload'. Когда событие запускается, вы просто добавляете скрипт-тег динамически в свой дом. Разнообразный подход заключался бы в том, чтобы инкапсулировать включенный скрипт в функцию и вызвать его при запуске onload-события. Таким образом, сценарий можно выполнить непосредственно после того, как тело завершило загрузку без необходимости сначала получать фактический скрипт с сервера. – newBee

ответ

1

As CorwinCZ упомянутый вы можете использовать ready function. И используйте jQuery.getScript() для загрузки файла JavaScript с сервера с помощью HTTP-запроса GET, а затем выполните его.

$(function() { 
     $.getScript("gwtapp.nocache.js") 
     .done(function(script, textStatus) { 
     console.log(textStatus); 
     }) 
     .fail(function(jqxhr, settings, exception) { 
     console.log("ERROR"); 
    }); 
    }); 
1

Вы можете использовать jQuery .ready() - поместить все в файл .js для этой функции. Например:

$(document).ready(function() { 
    //code here 
}); 

Функция .ready() ждет полной загрузки и создания дерева DOM.

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