Risposte:
Puoi avere $(document).ready()più volte in una pagina. Il codice viene eseguito nella sequenza in cui appare.
È possibile utilizzare l' $(window).load()evento per il codice poiché ciò accade dopo che la pagina è stata caricata completamente e tutto il codice nei vari $(document).ready()gestori ha terminato l'esecuzione.
$(window).load(function(){
//your code here
});
$(window).on('load', function() { });poiché $ (window) .load () è deprecato.
Questo blocco di codice risolve il mio problema,
<script type="text/javascript">
$(window).bind("load", function () {
// Code here
});
</script>
Più unità $(document).ready()verranno attivate in ordine dall'alto in basso nella pagina. L'ultimo si $(document).ready()attiverà per ultimo sulla pagina. All'interno di quest'ultimo $(document).ready(), puoi attivare un nuovo evento personalizzato da attivare dopo tutti gli altri ..
Racchiudi il tuo codice in un gestore di eventi per il nuovo evento personalizzato.
<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>
Da qui :
// 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
}
Questo aspetterà fino a quando jQuery viene caricato per usarlo, ma puoi usare lo stesso concetto, impostando le variabili negli altri script (o controllandole se non sono il tuo script) per aspettare che vengano caricati per usarli.
Ad esempio, sul mio sito, lo uso per il caricamento JS asincrono e aspetto che finiscano prima di fare qualsiasi cosa con loro usando 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>
Si scopre che a causa di una peculiare miscela di framework javascript che avevo bisogno di avviare lo script utilizzando un listener di eventi fornito da uno degli altri framework.
Hai provato a caricare tutte le funzioni di inizializzazione usando il $().ready, eseguendo la funzione jQuery che volevi per ultima?
Forse puoi usare setTimeout()sulla $().readyfunzione che vuoi eseguire, chiamando la funzionalità che vuoi caricare.
In alternativa, utilizzare setInterval()e controllare a intervalli per vedere se tutte le altre funzioni di caricamento sono state completate (memorizzare lo stato in una variabile booleana). Quando le condizioni sono soddisfatte, è possibile annullare l'intervallo ed eseguire la funzione di caricamento.
$(window).load(function(){...})