2015-07-24 5 views
2

Я хочу загрузить мой сайт CSS асинхронно. Я хочу знать, будет ли функционировать функция jQuery.ready() после того, как будет загружена асинхронная загрузка CSS, или будет jQuery игнорировать ее, и CSS может завершить загрузку после запуска функции jQuery.ready().jQuery.ready() function and asynchronous CSS

+0

Не вы просто ищете событие окна OnLoad ??? –

+0

Если это может решить мою проблему, я не знаю. –

ответ

1

Try используя $.holdReady()

// set `$.holdReady()` to `true` 
 
$.holdReady(true); 
 
// do stuff at `$.holdReady(true)` 
 
// e.g., call hide `body` element 
 
$("body").hide(); 
 
// load asynchronous `css` 
 
$("<style>") 
 
.appendTo("head") 
 
.load("https://gist.githubusercontent.com/anonymous/ec1ebbf8024850b7d400/" 
 
     + "raw/906431c0472286e141b91aac1676369bbb8d2f97/style.css" 
 
     , function(e) { 
 
    // set `$.holdReady()` to `false` 
 
    $.holdReady(false); 
 
}); 
 
// do stuff at `$.holdReady(false)` 
 
$(document).ready(function() { 
 
    $("body").show(); 
 
    alert("ready"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<body> 
 
    <div> 
 
    abc 
 
    </div> 
 
    <div> 
 
    123 
 
    </div> 
 
</body>

-1

jQuery.ready() запускается при загрузке DOM.

Если вы хотите загрузить некоторый CSS асинхронно, то лучше всего будет вставить ссылку тег в голову в готовом обратном вызове.

Других слов ...

<script language="javascript"> 
    $(document).ready(function() 
    { 
     $("head").append("<link rel=stylesheet href='yourfile.css' type='text/css'/>"); 
    } 
    ) 
</script> 

Надеется, что это помогает!

+1

Я думаю, что вы не правильно прочитали вопрос. Он хочет сначала загрузить css async, а затем document.ready должен работать. –

0

Короткий ответ - нет. $(document).ready() не будет ждать завершения асинхронной загрузки. Он загорится, как только DOM будет загружен.

Обычно вы загружаете async функции загрузки внутри (document).ready(), чтобы они начали выполнение, как только они могут безопасно. Немного странно, что вы пытаетесь выполнить загрузку async CSS перед DOM. $(document).ready() - функция события-триггера. Нельзя ждать.

Просьба уточнить, что именно вы пытаетесь выполнить.

P.S. Пожалуйста, прочитайте это "выполнение последовательности" ответ: Load and execution sequence of a web page?

+0

Я хочу загрузить CSS асинхронно, но потом хочу запустить jquery-код –