Se stiamo solo raccogliendo i modi di base per rilevare la visibilità, non dimenticarmi:
opacity > 0.01; // probably more like .1 to actually be visible, but YMMV
E su come ottenere gli attributi:
element.getAttribute(attributename);
Quindi, nel tuo esempio:
document.getElementById('snDealsPanel').getAttribute('visibility');
Ma cosa? Qui non funziona. Guarda più da vicino e scoprirai che la visibilità non viene aggiornata come un attributo sull'elemento, ma utilizzando la style
proprietà. Questo è uno dei tanti problemi nel provare a fare quello che stai facendo. Tra gli altri: non puoi garantire che ci sia effettivamente qualcosa da vedere in un elemento, solo perché la sua visibilità, visualizzazione e opacità hanno tutti i valori corretti. Potrebbe ancora mancare di contenuto o potrebbe mancare di altezza e larghezza. Un altro oggetto potrebbe oscurarlo. Per maggiori dettagli, una rapida ricerca su Google rivela questo , e comprende anche una libreria per provare a risolvere il problema. (YMMV)
Dai un'occhiata a quanto segue, che sono possibili duplicati di questa domanda, con risposte eccellenti, tra cui alcune intuizioni del potente John Resig. Tuttavia, il tuo caso d'uso specifico è leggermente diverso da quello standard, quindi mi asterrò dal segnalare:
(MODIFICA: OP DICE CHE STA SCARICANDO LE PAGINE, NON CREARLE, COSÌ SOTTO NON È APPLICABILE) Un'opzione migliore? Associa la visibilità degli elementi alle proprietà del modello e fai sempre dipendere la visibilità da quel modello, proprio come fa Angular con ng-show. Puoi farlo usando qualsiasi strumento tu voglia: angolare, semplice JS, qualunque cosa. Meglio ancora, puoi cambiare l'implementazione del DOM nel tempo, ma sarai sempre in grado di leggere lo stato dal modello, anziché il DOM. Leggere la tua verità dal DOM è male. E lento. Molto meglio controllare il modello e fidarsi dell'implementazione per garantire che lo stato DOM rifletta il modello. (E utilizza i test automatici per confermare tale presupposto.)
document.getElementById('snDealsPanel').style.visibility