2012-12-01 4 views
6

Eventuali duplicati:
document.all vs. document.getElementByIdChe cosa significa document.all?

Sto refactoring qualche vecchio codice scritto da qualcun altro. E mi sono imbattuto nel seguente frammento:

if (document.all || document.getElementById) { 
    ... 
} 

Quando verrà eseguito il codice all'interno dell'istruzione if-?

Grazie!

+1

Leggere questa domanda e rispondere: http://stackoverflow.com/questions/2408424/document-all-vs-document-getelementbyid –

+0

Utilizzo di ** 'document.all' ** e **' document.getElementById' * * senza parametri restituirà "true" se è supportato in quel browser. Quindi, il tuo "se" sarà eseguito se ** 'document.all' ** è supportato:' "IE 4 -> 10" ', alcune versioni di' Opera', e forse altre; ** Oppure ** if ** 'document.getElementById' ** è supportato:' "IE 5 e versioni successive" ',' "Netscape 6 e versioni successive" ', e probabilmente tutte le versioni moderne di" Firefox "," Chrome ", "Safari", ecc. Il "se" non eseguirà *** *** per '" IE <4 "', '" Netscape <6 "', e alcune versioni molto vecchie della maggior parte degli altri browser. –

+0

In realtà, questo è falso. Al giorno d'oggi, 'document.all' è falso per ragioni di compatibilità all'indietro, nonostante sia ancora un oggetto. Ad esempio, l'esecuzione di 'console.log (!! document.all, document.all.length)' stampa per me 'false 1059'. – Antimony

risposta

7

document.all() è un metodo non standard di accesso agli elementi DOM. È stato deprecato da alcuni browser. Ti dà accesso a tutti gli elementi secondari del tuo documento.

document.getElementById() è uno standard e completamente supportato. Ogni elemento ha un ID univoco nel documento.

+2

Il collegamento ad altre risposte dovrebbe essere fatto nei commenti, tranne in circostanze in cui si sta rispondendo a qualcosa di molto diverso e aggiungendo come riferimento –

+0

Grazie per la risposta. Ma quando verrà eseguito esattamente il codice all'interno dell'istruzione if? Nel mio caso sia 'document.all' che' document.getElementById' non hanno parametri come 'div1'. – user1170330

+0

@ user1170330: Se ho capito bene, verrà eseguito se l'utente ha attivato JavaScript nel suo browser. Inoltre, come ho letto [qui] (http://javascript.about.com/od/hintsandtips/a/worst_4.htm) sembra che questo primo caso fosse per IE4. Pertanto, puoi eseguire il kick se non hai il codice e utilizzare qualcos'altro per verificare se l'utente ha abilitato JS nel suo browser (ad esempio, come il tag