2015-05-26 14 views
5

C'è un modo per determinare se una funzione è in esecuzione in un documento pronto?C'è un modo per determinare se una funzione è in esecuzione nel documento pronta o no?

voglio dire qualcosa di simile:

function myfunction() { 
    var isinside = //... what to write here? 
    if (isinside) { 
    } 
} 

(E 'anche possibile la mia (molto principiante) concetto non è ottimale, così ho scrivere quello che sto cercando di realizzare:

Vorrei creare un oggetto riutilizzabile, cosa può essere istanziato in più istanze all'interno di una pagina (si spera con una riga di JavaScript per istanza) Tuttavia ci sono cose che questo oggetto deve fare in documenti pronti, come collegare i gestori di eventi.

+1

Quindi stai cercando di scoprire se l'evento pronto per il documento è stato attivato o meno? –

+0

Qantas: buon punto. Se utilizzo la soluzione TrueBlueAussie, devo scoprire se il documento pronto è stato attivato o meno. Se sì, allora non posso fare affidamento sul gestore jQuery asincrono asincrono, invece devo chiamare direttamente il mio codice init ... –

+0

In effetti non è necessario controllare, consultare la documentazione di jQuery: ['.ready()' ] (https://api.jquery.com/ready/) –

risposta

5

I am Non sono sicuro del motivo per cui hai un problema Qui? Il codice chiamante è normalmente responsabile di essere in un gestore DOM ready o no, non delle funzioni.

È possibile basta mettere un DOM pronto ridondante all'interno di qualsiasi funzione, se necessario, ma questo suona come una situazione strana quindi è necessario mostrare al resto del codice.

ad es. qualsiasi funzione può avere un DOM gestore pronto:

function myfunction() { 
    $(document).ready(function(){ 
     // I am inside DOM ready! 
     // Connect my DOM element events here 
    }); 
    // Do my other non-element stuff here 
} 

o, più corta:

function myfunction() { 
    $(function(){ 
     // I am inside DOM ready! 
     // Connect my DOM element events here 
    }); 
    // Do my other non-element stuff here 
} 

La chiave qui è che i gestori DOM pronto può essere chiamato dopo DOM pronto e sparano immediatamente.

Lo svantaggio di questo è che non è possibile fare affidamento su un valore restituito poiché DOM ready è potenzialmente asincrono.

+0

Vuole sapere se la sua funzione è stata chiamata dal codice all'interno di '$ (document) .ready()'. – Barmar

+4

@Barmar: lo capisco, ma perché dovrebbe * badare * condizionatamente? :) –

+0

TrueBlueAussie: Beh, il problema è la mia conoscenza da principiante che attualmente mi impedisce di usare le possibilità in modo creativo :-). Tuttavia, la tua soluzione solleva una nuova domanda. Ora devo scoprire se il documento pronto è già stato attivato o meno. Se sì, allora non posso fare affidamento sul gestore jQuery asincrono asincrono, invece devo chiamare direttamente il mio codice init ... –

Problemi correlati