Відповіді:
Ви можете мати $(document).ready()
кілька разів на сторінці. Код запускається в тій послідовності, в якій він з'являється.
Ви можете використовувати $(window).load()
подію для свого коду, оскільки це відбувається після повного завантаження сторінки та $(document).ready()
закінчення роботи всього коду в різних обробниках.
$(window).load(function(){
//your code here
});
$(window).on('load', function() { });
оскільки $ (window) .load () застарілий.
Цей блок коду вирішує мою проблему,
<script type="text/javascript">
$(window).bind("load", function () {
// Code here
});
</script>
Кілька $(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>
Від сюди :
// 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>
Ви спробували завантажити всі функції ініціалізації за допомогою $().ready
запущеної функції jQuery, яку ви хотіли останнього?
Може бути , ви можете використовувати setTimeout()
на $().ready
функцію , яку ви хочете запустити, викликавши функцію ви хотіли навантаження.
Або скористайтеся setInterval()
і перевірте інтервал, щоб перевірити, чи всі інші функції завантаження виконані (збережіть статус у булевій змінній). Коли умови будуть виконані, ви можете скасувати інтервал і запустити функцію навантаження.
$(window).load(function(){...})