Io ho uno script con un evento DOMContentLoaded
handler-Gli script caricati con Async con DOMContentLoaded o carichi i gestori di eventi non vengono chiamati?
document.addEventListener('DOMContentLoaded', function() {
console.log('Hi');
});
quale sto caricando asynchronously-
<script async src=script.js></script>
Tuttavia, il gestore di eventi non viene mai chiamato. Se lo carico in modo sincrono -
<script src=script.js></script>
Funziona bene.
(Anche se cambio l'evento DOMContentLoaded
ad un evento load
, non è mai chiamato.)
Che cosa dà? Il gestore di eventi dovrebbe essere registrato indipendentemente dal modo in cui lo script è caricato dal browser, no?
Edit: Non funziona su Chrome 18.0.1025.11 beta ma, con DOMContentLoaded
, è fa su Firefox 11 beta (ma con load
non è così). Vai a capire.
OH I GRANDI SIGNORI DI JAVASCRIPT E IL DOM, PREGHI MOSTRA L'ERRORE DEI MIEI MODI!
Caricando lo script in modo asincrono, si sta dicendo al browser che si può caricare lo script indipendentemente dalle altre parti della pagina. Ciò significa che la pagina potrebbe terminare il caricamento e potrebbe generare DOMContentLoaded PRIMA che lo script venga caricato e prima che si registri per l'evento. Se ciò accade, perderai l'evento (è già successo quando ti registri). – jfriend00
Oh interingua. Quindi davvero dovrei provare per l'evento che ha già sparato - (** edit **: in realtà, dal momento che faccio affidamento sull'evento che si attiva * dopo * lo script, non dovrebbe essere affatto asincrono). Freddo. Scrivilo come risposta e puoi avere un upvote :) – user1203233