Задержка jquery-скрипта, пока все остальное не загрузится

У меня есть скрипт jquery, который мне нужно запустить только после того, как все остальное на странице, включая некоторые другие javascript-скрипты (над которыми я не имею никакого контроля), закончило свою работу.

Хотя, возможно, была альтернатива $ (document) .ready, но я не смог ее найти.

100 голосов | спросил chrism 18 J0000006Europe/Moscow 2009, 15:22:48

4 ответа


0

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

ответил chrism 17 J000000Friday09 2009, 19:52:06
0

Несколько $(document).ready() сработают в порядке сверху вниз на странице. Последний $(document).ready() будет срабатывать последним на странице. Внутри последнего $(document).ready() вы можете инициировать новое настраиваемое событие, которое будет запускаться после всех остальных.

Оберните ваш код в обработчик событий для нового пользовательского события.

<html>
<head>
<script>
    $(document).on("my-event-afterLastDocumentReady", function () {
        // Fires LAST
    });
    $(document).ready(function() {
        // Fires FIRST
    });
    $(document).ready(function() {
        // Fires SECOND
    });
    $(document).ready(function() {
        // Fires THIRD
    });
</script>
<body>
... other code, scripts, etc....
</body>
</html>

<script>
    $(document).ready(function() {
        // Fires FOURTH
        // This event will fire after all the other $(document).ready() functions have completed.
        // Usefull when your script is at the top of the page, but you need it run last
        $(document).trigger("my-event-afterLastDocumentReady");
    });
</script>
ответил Jason Williams 4 J0000006Europe/Moscow 2015, 17:51:00
0

Этот блок кода решает мою проблему,

 <script type="text/javascript">
  $(window).bind("load", function () {
    // Code here
  });
</script>
ответил Agah Toruk 7 MonEurope/Moscow2015-12-07T14:07:09+03:00Europe/Moscow12bEurope/MoscowMon, 07 Dec 2015 14:07:09 +0300 2015, 14:07:09
0

С здесь :

// Add jQuery 
var GM_JQ = document.createElement('script'); 
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(GM_JQ); 

// Check if jQuery's loaded 
function GM_wait() 
{ 
    if(typeof unsafeWindow.jQuery == 'undefined') 
    { 
        window.setTimeout(GM_wait,100); 
    } 
    else 
    { 
        $ = unsafeWindow.jQuery; 
        letsJQuery(); 
    } 
} 

GM_wait(); 

// All your GM code must be inside this function 
function letsJQuery() 
{
    // Do your jQuery stuff in here    
} 

Это будет ждать, пока jQuery не загрузится, чтобы использовать его, но вы можете использовать ту же концепцию, устанавливая переменные в других ваших скриптах (или проверяя их, если они не ваши скрипты), чтобы ждать, пока они загрузятся, чтобы использовать их .

Например, на моем сайте я использую это для асинхронной загрузки JS и ожидания, пока они не закончатся, прежде чем что-либо делать с ними с помощью jQuery:

<script type="text/javascript" language="JavaScript"> 
    function js(url){
        s = document.createElement("script");
        s.type = "text/javascript";
        s.src = url;
        document.getElementsByTagName("head")[0].appendChild(s);
    }       

    js("/js/jquery-ui.js");
    js("/js/jrails.js");
    js("/js/jquery.jgrowl-min.js");
    js("/js/jquery.scrollTo-min.js");
    js("/js/jquery.corner-min.js");
    js("/js/jquery.cookie-min.js");
    js("/js/application-min.js");

    function JS_wait() {
        if (typeof $.cookie == 'undefined' || // set in jquery.cookie-min.js
            typeof getLastViewedAnchor == 'undefined' || // set in application-min.js
            typeof getLastViewedArchive == 'undefined' || // set in application-min.js 
            typeof getAntiSpamValue == 'undefined') // set in application-min.js
        { 
            window.setTimeout(JS_wait, 100); 
        }
        else 
        { 
            JS_ready(); 
        }
    }

    function JS_ready() {
        // snipped
    };

    $(document).ready(JS_wait);
</script> 
ответил Chris Doggett 18 J0000006Europe/Moscow 2009, 15:37:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132