2016-01-12 10 views
5

Avere il codice qui sotto:Html e rinviare attributo

<html> 
    <head> 

     <script>    
      function elem_onload() { 
       console.log("elem_onload"); 
      };  
     </script> 

    </head> 

    <body onload="elem_onload()">  
     <script type="text/javascript" src="script.js" defer></script>  
    </body> 
</html> 

script.js:

console.log("external script"); 

l'attributo rinviare non sembra funzionare. L'output è:

external script 
elem_onload 

con o senza attributo di rinvio. Non è possibile

elem_onload 
external script 

con posticipo definito?

Risposta duplicata !?

vorrei precisare che la mia risposta non è duplicato di

How exactly does <script defer=“defer”> work?

La risposta consigliata si fa riferimento è di circa script inline in cui il comportamento del browser è chiaro per me - è semplicemente ignora defer. La mia domanda riguarda script esterno, nel qual caso il browser deve eseguire lo script differita esterna

dopo che il documento è stato analizzato

come stati di documentazione, quindi, dopo onload evento.

Così sto aspettando una risposta appropriata ...

+0

controllare http://stackoverflow.com/questions/5250412/how-exact--es-script-defer-defer-work – Mate

+0

Non utilizzare il differimento prima, ma non si dovrebbe assegnare un valore alla proprietà, ad es. 'defer =" true "'? –

+0

Hai ragione che sembra contro-intuitivo, ma non hai detto quale browser stai usando per questo, se hai lo stesso comportamento in browser diversi né se il contenuto è memorizzabile nella cache. – symcbean

risposta

0

Si tratta del onload. Ecco una definizione dell'attributo onload, preso da this page.

L'attributo onload si attiva quando un oggetto è stato caricato.

onload è più spesso utilizzato all'interno dell'elemento < body> per eseguire uno script dopo che una pagina Web ha caricato completamente tutto il contenuto (incluse immagini, file di script, file CSS, ecc.). Tuttavia, può essere utilizzato anche su altri elementi (vedere "Tag HTML supportati" di seguito).

Quindi, la funzione onload eseguirà dopo il contenuto all'interno del corpo era stato caricato, cioè - dopo lo script interno aveva eseguito.

0

Ho paura che remdevtec risposta non è corretta come sembrava dimenticare che ho usato l'attributo defer nel tag script, mentre la definizione dice:

Questo attributo booleano è impostato per indicare a un browser che lo script è pensato per essere eseguito dopo che il documento è stato analizzato

Quindi, in un caso del genere (almeno a mio parere) di script esterno deve essere eseguita dopo onload, ma non è t.

Problemi correlati